merge the formfield patch from ooo-build
[ooovba.git] / testautomation / dbaccess / optional / includes / db_Query.inc
blobd9efb9ef38026bb18c5ac79fe5a4ec02301b878e
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 '* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 '* 
5 '* Copyright 2008 by Sun Microsystems, Inc.
6 '*
7 '* OpenOffice.org - a multi-platform office productivity suite
8 '*
9 '* $RCSfile: db_Query.inc,v $
11 '* $Revision: 1.1 $
13 '* last change: $Author: jsi $ $Date: 2008-06-16 07:43:41 $
15 '* This file is part of OpenOffice.org.
17 '* OpenOffice.org is free software: you can redistribute it and/or modify
18 '* it under the terms of the GNU Lesser General Public License version 3
19 '* only, as published by the Free Software Foundation.
21 '* OpenOffice.org is distributed in the hope that it will be useful,
22 '* but WITHOUT ANY WARRANTY; without even the implied warranty of
23 '* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 '* GNU Lesser General Public License version 3 for more details
25 '* (a copy is included in the LICENSE file that accompanied this code).
27 '* You should have received a copy of the GNU Lesser General Public License
28 '* version 3 along with OpenOffice.org.  If not, see
29 '* <http://www.openoffice.org/license.html>
30 '* for a copy of the LGPLv3 License.
32 '/************************************************************************
34 '* owner : marc.neumann@sun.com
36 '* short description : Query Test Library
38 '\***********************************************************************
39 'TODO: testcase for distinct values
40 function db_Query( sFileName , optional sType , optional sPassword)
41     
42     if isMissing (sType) then
43         sType = "1"
44     else
45         printlog sType    
46         sType = UCase(sType)
47         printlog sType
48         select case sType
49             case "TEXT", "CALC"
50                 sType = "1"
51             case "ODBC", "JDBC"
52                 sType = "2"
53             case "HSQLDB"
54                 sType = "2"   
55             case else
56                 sType = "1"
57         end select
58     endif 
60     call tQueryCriterion( sFileName , sType , sPassword)
61     
62     if sType <> "1" then 'run only with database from type >1  
63         call tQueryJoin( sFileName , sType, sPassword )
64         call tQueriesInQueries(sFileName)
65     endif
66     
67     call tSortQueryWithAlias(sFileName , sPassword)
68     
69 end function
70 '-------------------------------------------------------------------------
71 function tQueryJoin( sFileName , optional sType, optional sPassword )
72 'TODO: check Join Type ( LEFT , INNER etc bug i17390)     
73     Dim SelEntry as string
74     Dim sTableName as string
75     
76     sTableName = "TT_Query2"
78     if IsMissing(sPassword) then
79         if ( not fOpenDatabase(sFileName) ) then        
80             warnlog "Database can't be open"
81             exit function
82         endif
83     else
84         if ( not fOpenDatabase(sFileName,sPassword) ) then        
85             warnlog "Database can't be open"
86             exit function
87         endif
88     endif
89     
90     fOpenNewQueryDesign
92     Kontext "AddTables"
93     'TODO: add a test to click on the execute button, before the add table dialog is closed.
94             dim ix as integer 
95             dim i as integer
96             ix = TableName.getItemCount                
97             for i = 1 to ix
98                 TableName.Select i
99                 TableName.TypeKeys "<ADD>"
100                 'printlog "ix = " + ix
101                 'printlog "TableName.getItemCount = " + TableName.getItemCount 
102                 if TableName.getItemCount > ix then
103                     ix = TableName.getItemCount
104                     'printlog "TableName.getItemCount > ix"
105                 endif
106                 'printlog "TableName.getSeltext = " + TableName.getSeltext
107                 if TableName.getSeltext = sTableName then
108                     i = ix
109                 endif
110             next
111             if TableName.getSeltext <> sTableName then
112                 warnlog "Can find the table " + sTableName + "." + _
113                         "Make sure that the table exists when starting this test."
114                 DatabaseClose                        
115                 sleep(5)
116                 Kontext "Messagebox"
117                     if Messagebox.Exists(3) then
118                         if Messagebox.getRT = 304 then
119                             Messagebox.No                        
120                         end if                        
121                     end if                
122                 call hCloseDocument
123                 exit function
124             endif
125             printlog "- Add " + sTableName +" table to query design"
126             '/// Add database table to Query.
127             AddTable.Click
128             '######## add table TT_Query2 #########
129             sTableName = "TT_Query3"
130             Kontext "AddTables"
131             'TODO: add a test to click on the execute button, before the add table dialog is closed.                
132             ix = TableName.getItemCount                
133             for i = 1 to ix
134                 TableName.Select i
135                 TableName.TypeKeys "<ADD>"
136                 if TableName.getItemCount > ix then
137                     ix = TableName.getItemCount
138             
139                 endif                
140                 if TableName.getSeltext = sTableName then
141                     i = ix
142                 endif
143             next
145             if TableName.getSeltext <> sTableName then
146                 warnlog "Can find the table " + sTableName + "." + _
147                         "Make sure that the table exists when starting this test."
148                 exit function
149             endif
151             printlog "- Add " + sTableName +" table to query design"
152             '/// Add database table to Query.
153             AddTable.Click
154             
155             sleep(2) 
156             if AddTables.exists(2) then 
157                 CloseDlg.Click ' When the AddTables dialog still exists then close him
158             endif
159             sleep(1)        
160     
161         Kontext "QueryDesignTable"        
162             QueryDesignTable.useMenu
163             sleep(1)
164             hMenuSelectNr(4)
165             sleep(1)      
166             hMenuSelectNr(1)                         
167             sleep(1)
168     
169         Kontext "JoinProperties"
170             JoinProperties.TypeKeys "<TAB>" , true
171             sleep(1)
172             JoinProperties.TypeKeys "<TAB>" , true
173             sleep(1)
174             JoinProperties.TypeKeys "<TAB>" , true
175             sleep(1)
176             JoinProperties.TypeKeys "<TAB>" , true
177             sleep(1)
178             JoinProperties.TypeKeys "<MOD1 DOWN>" , true
179             sleep(1)
180             JoinProperties.TypeKeys "<TAB>" , true
181             sleep(1)
182             JoinProperties.TypeKeys "<MOD1 DOWN>" , true
183             sleep(1)
184             JoinProperties.OK
185         
186         Kontext "QueryDesignCriterion"
187             sleep(1)            
188             QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
189             mywait()
190             QueryDesignCriterion.TypeKeys "<HOME>" , true
191             mywait()                
192             QueryDesignCriterion.TypeKeys "<DOWN>" , 2 , true
193             
194             QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , true
195             
196             QueryDesignCriterion.TypeKeys "<UP>" , 2 , true
197             
198             QueryDesignCriterion.TypeKeys "<MOD1 UP>" , 3 , true
199             
200             QueryDesignCriterion.TypeKeys "<DOWN>" , 5 , true
201             mywait()
202             QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , 2 , true
203             mywait()
204             sleep(1)
205         Kontext "Toolbar"
206             ExecuteBtn.Click
207     
208         Kontext "TableView"
209             if TableView.Exists(3) then
210                 
211                     DataWindow.TypeKeys "<MOD1 C>"
212                     if GetClipboard <> "4" then
213                         warnlog "Wrong result, maybe the join doesn't work."
214                     endif
215             endif
216         sleep(1)
217                 call fCloseQueryDesign
218         
219         call fCloseDatabase
220    
221 end function
222 '-------------------------------------------------------------------------
223 function tQueryCriterion( sFileName , optional sType , optional sPassword)
224     
225     Dim SelEntry as string
226     Dim sTableName as string
227     
228     sTableName = "TT_Query1"
230     if IsMissing(sPassword) then
231         if ( not fOpenDatabase(sFileName) ) then        
232             warnlog "Database can't be open"
233             exit function
234         endif
235     else
236         if ( not fOpenDatabase(sFileName,sPassword) ) then        
237             warnlog "Database can't be open"
238             exit function
239         endif
240     endif
241     
242     fOpenNewQueryDesign
243     
244         
245     Kontext "AddTables"
246         'TODO: add a test to click on the execute button, before the add table dialog is closed.
247         dim ix as integer 
248         dim i as integer
249         ix = TableName.getItemCount                
250         for i = 1 to ix
251             TableName.Select i
252             TableName.TypeKeys "<ADD>"
253             'printlog "ix = " + ix
254             'printlog "TableName.getItemCount = " + TableName.getItemCount 
255             if TableName.getItemCount > ix then
256                 ix = TableName.getItemCount
257                 'printlog "TableName.getItemCount > ix"
258             endif
259             'printlog "TableName.getSeltext = " + TableName.getSeltext
260             if TableName.getSeltext = sTableName then
261                 i = ix
262             endif
263         next
264         if TableName.getSeltext <> sTableName then
265             warnlog "Can find the table " + sTableName + "." + _
266                     "Make sure that the table exists when starting this test."
267             DatabaseClose                        
268             sleep(5)
269             Kontext "Messagebox"
270                 if Messagebox.Exists(3) then
271                     if Messagebox.getRT = 304 then
272                         Messagebox.No                        
273                     end if                        
274                 end if                
275             call hCloseDocument
276             exit function
277         endif
278         printlog "- Add " + sTableName +" table to query design"
279         '/// Add database table to Query.
280         AddTable.Click
281         sleep(2) 
282         if AddTables.exists(2) then 
283             CloseDlg.Click ' When the AddTables dialog still exists then close him
284         endif
285         sleep(1)        
286     Kontext "QueryDesignCriterion"                           
287         Field.Select(1)
288         sleep(1)                
289     Kontext "Toolbar"
290         '/// Executing query
291         printlog "- Executing query"
292         ExecuteBtn.Click
293         sleep(5)
294     Kontext "TableView"
295         if NOT DataWindow.Exists(3) then
296             warnlog "Execution of a query failed!"
297         end if
298     ' #### don't comment a test, because they depends on each other ####
299     if sType <> "1" then
300         '/// start the 1. test #############################
301         printlog "start the 1. test #############################"            
302         call tTest1            
303         '/// start the 2. test
304         printlog "start the 2. test"            
305         call tTest2
306         '/// start the 3. test
307         printlog "start the 3. test"            
308         call tTest3  
309         '/// start the 4. test
310         printlog "start the 4. test"            
311         call tTest4
312         '/// start the 5. test
313         printlog "start the 5. test"            
314         call tTest5          
315         '/// start the 6. test
316         printlog "start the 6. test"            
317         call tTest6
318         '/// start the 7. test
319         printlog "start the 7. test"            
320         call tTest7            
321         '/// start the 8. test
322         printlog "start the 8. test"            
323         call tTest8            
324         ' main test end ###############################
325         printlog "main test end ###############################"
326     endif
327     fCloseQueryDesign
328     fCloseDatabase    
329     
330 end function
331 '-------------------------------------------------------------------------
332 function tQueriesInQueries( sFileName , optional sType , optional sPassword)
333     
334     Dim SelEntry as string
335     Dim sTableName as string
336     
337     sTableName = "TT_Query1"
339     if IsMissing(sPassword) then
340         if ( not fOpenDatabase(sFileName) ) then        
341             warnlog "Database can't be open"
342             exit function
343         endif
344     else
345         if ( not fOpenDatabase(sFileName,sPassword) ) then        
346             warnlog "Database can't be open"
347             exit function
348         endif
349     endif
350     
351     '/// open new query design
352     printlog "open new query design"
353     call fOpenNewQueryDesign
354     
355     '/// choose table TT_Query1 from AddTable dialog
356     printlog "choose table TT_Query1 from AddTable dialog"
357     call fChooseTableInQueryAddTableDialog("TT_Query1")
358     
359     '/// insert fields name1 and name2
360     printlog "insert fields name1 and name2"
361     Kontext "QueryDesignCriterion"
362         sleep(1)            
363         printlog "Go to the top left field."
364         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
365         mywait()
366         QueryDesignCriterion.TypeKeys "<HOME>" , true
367         mywait()
368         QueryDesignCriterion.TypeKeys "<MOD1 UP>" , 7, true
369         mywait()
370         QueryDesignCriterion.TypeKeys "<RETURN>" , true
371         mywait()
372         QueryDesignCriterion.TypeKeys "<MOD1 UP>" , 6, true
373         mywait()
374         QueryDesignCriterion.TypeKeys "<RETURN>" , true
375         mywait()
376         sleep(1)
377     
378     '/// save the query as Query_test_1
379     printlog "save the query as Query_test_1"
380     call fSaveQueryDesign("Query_test_1")
382     '/// close the query design
383     printlog "close the query design"
384     call fCloseQueryDesign()
385     
386     '/// open new query design
387     printlog "open new query design"    
388     call fOpenNewQueryDesign
389     
390     '/// choose query Query_test_1 from AddTable dialog
391     printlog "choose query Query_test_1 from AddTable dialog"
392     call fChooseQueryInQueryAddTableDialog("Query_test_1")
393     
394     '/// insert fields name1
395     printlog "insert fields name1"
396     Kontext "QueryDesignCriterion"
397         sleep(1)            
398         printlog "Go to the top left field."
399         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
400         mywait()
401         QueryDesignCriterion.TypeKeys "<HOME>" , true
402         mywait()
403         QueryDesignCriterion.TypeKeys "<MOD1 UP>" , 2, true
404         mywait()
405         QueryDesignCriterion.TypeKeys "<RETURN>" , true
406         sleep(1)
407     
408     
409     '/// save the query with the name Query_test_2
410     printlog "save the query with the name Query_test_2"
411     call fSaveQueryDesign("Query_test_2")
413     '/// close the query design
414     printlog "close the query design"
415     call fCloseQueryDesign()    
416     
417     '/// close the query design
418     printlog "close the query design"
419     call fCloseDatabase(true) 
420     
421     '/// open the database again
422     printlog "open the database again"
423     if IsMissing(sPassword) then
424         if ( not fOpenDatabase(sFileName) ) then        
425             warnlog "Database can't be open"
426             exit function
427         endif
428     else
429         if ( not fOpenDatabase(sFileName,sPassword) ) then        
430             warnlog "Database can't be open"
431             exit function
432         endif
433     endif
434     
435     '/// execute the QueryInQuery "Query_test_2"
436     printlog "execute the QueryInQuery Query_test_2"
437     if ( fOpenQuery("Query_test_2") = false ) then
438         warnlog "Can't open query Query_test_2"
439         call fCloseDatabase()
440         exit function        
441     endif
442     
443     '/// close Query view
444     printlog "close Query view"
445     call fCloseQueryView()
446     
447     '/// close database
448     printlog "close database"
449     call fCloseDatabase()
451 end function
452 '-------------------------------------------------------------------------
453 sub mywait()
454     'sleep(1)
455 end sub
457 sub tTest1
458     '/// insert the <b>* as field</b>
459     '/// take <b>count</b> from the <b>function</b> listbox
460     '/// <b>Execute</b> the query
461     '/// the <b>result</b> should be <b>11</b>      
462     Kontext "QueryDesignCriterion"
463         sleep(1)            
464         printlog "Go to the top left field."
465         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
466         mywait()
467         QueryDesignCriterion.TypeKeys "<HOME>" , true
468         mywait()                
469         QueryDesignCriterion.TypeKeys "<DOWN>" , 5 , true
470         mywait()
471         QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , true
472         mywait()
473         sleep(1)
474     Kontext "Toolbar"                
475         printlog "- Executing query"
476         ExecuteBtn.Click
477         sleep(5)
478     Kontext "TableView"
479         if TableView.Exists(3) then            
480                 DataWindow.TypeKeys "<MOD1 C>"
481                 if GetClipboard <> "11" then 
482                     warnlog "There should be 11 records but there are " + GetClipboard 
483                 else
484                     printlog GetClipboard + " records available."
485                 endif
486         else
487             warnlog "Execution of a query failed!"
488         end if  
489         sleep(2)
490 end sub
492 sub tTest2
493     '/// add the field <b>'name1'</b> to the field list
494     '/// set the field <b>invisible</b>
495     '/// as criterion insert <b>LIKE 'F*'</b>
496     '/// <b>execute</b> the query
497     '/// the <b>result</b> should be <b>3</b>         
498     Kontext "QueryDesignCriterion"
499         sleep(1)            
500         printlog "Go to the top left field."
501         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
502         mywait()
503         QueryDesignCriterion.TypeKeys "<HOME>" , true
504         mywait()                
505         QueryDesignCriterion.TypeKeys "<TAB>" , true
506         mywait()
507         QueryDesignCriterion.TypeKeys "<SHIFT PAGEUP>" , true
508         mywait()
509         QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , 2 , true
510         mywait()
511         QueryDesignCriterion.TypeKeys "<DOWN>" , 4 , true
512         mywait()
513         QueryDesignCriterion.TypeKeys "<SPACE>" , true
514         mywait()
515         QueryDesignCriterion.TypeKeys "<DOWN>" , 2 , true
516         mywait()
517         QueryDesignCriterion.TypeKeys "LIKE 'F*'" , true
518         mywait()
519         QueryDesignCriterion.TypeKeys "<RETURN>" , true
520         mywait()
521         sleep(1)
522     Kontext "Toolbar"                
523         printlog "- Executing query"
524         ExecuteBtn.Click
525         sleep(5)
526     Kontext "TableView"
527         if TableView.Exists(3) then
528             
529                 DataWindow.TypeKeys "<MOD1 C>"
530                 if GetClipboard <> "3" then 
531                     warnlog "There should be 3 records but there are " + GetClipboard 
532                 else
533                     printlog GetClipboard + " records available."
534                 endif
535         else
536             warnlog "Execution of a query failed!"
537         end if  
538     sleep(2)
539 end sub
541 sub tTest3
542     '/// add the field <b>'date'</b> to the field list
543     '/// set the field <b>invisible</b>
544     '/// as criterion insert <b>IS NULL</b>
545     '/// b>execute</b> the query
546     '/// the <b>result</b> should be <b>1</b>
547     Kontext "QueryDesignCriterion"
548         sleep(1)            
549         printlog "Go to the top left field."
550         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
551         mywait()
552         QueryDesignCriterion.TypeKeys "<HOME>" , true
553         mywait()                
554         QueryDesignCriterion.TypeKeys "<TAB>" , 2 , true
555         mywait()                
556         QueryDesignCriterion.TypeKeys "<SHIFT PAGEUP>" , true
557         mywait()                
558         QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , 7 , true
559         mywait()                
560         QueryDesignCriterion.TypeKeys "<DOWN>" , 4 , true
561         mywait()                
562         QueryDesignCriterion.TypeKeys "<SPACE>" , true
563         mywait()                
564         QueryDesignCriterion.TypeKeys "<DOWN>" , 2 , true
565         mywait()                
566         QueryDesignCriterion.TypeKeys "IS NULL" , true
567         mywait()
568         QueryDesignCriterion.TypeKeys "<RETURN>" , true
569         mywait()
570         'TODO: check if the right localazied string appear              
571         sleep(1)            
572     Kontext "Toolbar"                
573         printlog "- Executing query"
574         ExecuteBtn.Click
575         sleep(5)
576     Kontext "TableView"
577         if TableView.Exists(3) then
578             
579                 DataWindow.TypeKeys "<MOD1 C>"
580                 if GetClipboard <> "1" then 
581                     warnlog "There should be 1 records but there are " + GetClipboard 
582                 else
583                     printlog GetClipboard + " records available."
584                 endif
585         else
586             warnlog "Execution of a query failed!"
587         end if  
588     sleep(2)
589 end sub
591 sub tTest4
592     '/// <b>change</b> the criterion for field <b>date</b> to <b>is not null</b>
593     '/// <b>execute</b> the query
594     '/// the <b>result</b> should be <b>2</b>     
595     Kontext "QueryDesignCriterion"
596                     
597         printlog "Go to the top left field."
598         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
599         mywait()
600         QueryDesignCriterion.TypeKeys "<HOME>" , true
601         mywait()
602         QueryDesignCriterion.TypeKeys "<TAB>" , 2 , true
603         mywait()                                
604         QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true
605         mywait()                
606         QueryDesignCriterion.TypeKeys "<SHIFT END>" , true
607         mywait()
608         QueryDesignCriterion.TypeKeys "IS NOT NULL" , true
609         mywait()
610         QueryDesignCriterion.TypeKeys "<RETURN>" , true
611         mywait()
612         'TODO: check if the right localazied string appear                
613         sleep(1)
614     Kontext "Toolbar"                
615         printlog "- Executing query"
616         ExecuteBtn.Click
617         sleep(5)
618     Kontext "TableView"
619         if TableView.Exists(3) then
620             
621                 DataWindow.TypeKeys "<MOD1 C>"
622                 if GetClipboard <> "2" then 
623                     warnlog "There should be 2 records but there are " + GetClipboard 
624                 else
625                     printlog GetClipboard + " records available."
626                 endif
627         else
628             warnlog "Execution of a query failed!"
629         end if  
630     sleep(2)
631 end sub
633 sub tTest5
634     '/// <b>remove</b> the fields <b>'name1' and 'date'</b>
635     '/// <b>add</b> field <b>ID</b>
636     '/// set <b>ID invisible</b>
637     '/// as <b>criterion</b> insert <b>BETWEEN 4 AND 7</b>
638     '/// <b>execute</b> the query
639     '/// the <b>result</b> should be <b>4</b>     
640     Kontext "QueryDesignCriterion"
641         sleep(1)            
642         printlog "Go to the top left field."
643         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
644         mywait()
645         QueryDesignCriterion.TypeKeys "<HOME>" , true
646         mywait()
647         QueryDesignCriterion.TypeKeys "<TAB>" , true
648         mywait()
649         QueryDesignCriterion.TypeKeys "<SHIFT END>" , true        
650         mywait()
651         QueryDesignCriterion.TypeKeys "<DELETE>" , true        
652         mywait()
653         QueryDesignCriterion.TypeKeys "<SHIFT PAGEUP>" , true
654         mywait()                
655         QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , true
656         mywait()                
657         QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true
658         mywait()
659         QueryDesignCriterion.TypeKeys "<SHIFT END>" , true
660         mywait()
661         QueryDesignCriterion.TypeKeys "<DELETE>" , true
662         mywait()
663         QueryDesignCriterion.TypeKeys "BETWEEN 4 AND 7" , true
664         mywait()
665         QueryDesignCriterion.TypeKeys "<RETURN>" , true
666         mywait()
667         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
668         mywait()
669         QueryDesignCriterion.TypeKeys "<SHIFT END>" , true
670         mywait()
671         QueryDesignCriterion.TypeKeys "<DELETE>" , true
672         mywait()
673         QueryDesignCriterion.TypeKeys "<RETURN>" , true
674         mywait()
675         'TODO: check if the right localazied string appear                
676         sleep(1)
677     Kontext "Toolbar"                
678         printlog "- Executing query"
679         ExecuteBtn.Click
680         sleep(5)
681     Kontext "TableView"
682         if TableView.Exists(3) then
683             
684                 DataWindow.TypeKeys "<MOD1 C>"
685                 if GetClipboard <> "4" then 
686                     warnlog "There should be 4 records but there are " + GetClipboard 
687                 else
688                     printlog GetClipboard + " records available."
689                 endif
690         else
691             warnlog "Execution of a query failed!"
692         end if  
693     sleep(2)
694 end sub
696 sub tTest6
697     '/// <b>change the criterion</b> for field ID to <b>NOT BETWEEN 4 AND 7</b>
698     '/// <b>execute</b> the query
699     '/// the <b>result</b> should be <b>7</b>
700     Kontext "QueryDesignCriterion"
701         sleep(1)            
702         printlog "Go to the top left field."
703         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
704         mywait()
705         QueryDesignCriterion.TypeKeys "<HOME>" , true
706         mywait()
707         QueryDesignCriterion.TypeKeys "<TAB>" , true
708         mywait()                                
709         QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true
710         mywait()
711         QueryDesignCriterion.TypeKeys "<SHIFT END>" , true
712         mywait()
713         QueryDesignCriterion.TypeKeys "NOT BETWEEN 4 AND 7" , true
714         mywait()
715         QueryDesignCriterion.TypeKeys "<RETURN>" , true
716         mywait()
717         'TODO: check if the right localazied string appear                
718         sleep(1)
719     Kontext "Toolbar"                
720         printlog "- Executing query"
721         ExecuteBtn.Click
722         sleep(5)
723     Kontext "TableView"
724         if TableView.Exists(3) then
725             
726                 DataWindow.TypeKeys "<MOD1 C>"
727                 if GetClipboard <> "7" then 
728                     warnlog "There should be 7 records but there are " + GetClipboard 
729                 else
730                     printlog GetClipboard + " records available."
731                 endif
732         else
733             warnlog "Execution of a query failed!"
734         end if  
735     sleep(2)
736 end sub
738 sub tTest7
739     '/// remove the field ID
740     '/// <b>add</b> field <b>name1</b>
741     '/// set name1 <b>invisible</b>
742     '/// as <b>criterion</b> insert <b>IN ('Heinz','Freddi')</b>
743     '/// <b>execute</b> the query
744     '/// the <b>result</b> should be <b>2</b>
745     Kontext "QueryDesignCriterion"
746         sleep(1)            
747         printlog "Go to the top left field."
748         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
749         mywait()
750         QueryDesignCriterion.TypeKeys "<HOME>" , true
751         mywait()                
752         QueryDesignCriterion.TypeKeys "<TAB>" , true
753         mywait()   
754         QueryDesignCriterion.TypeKeys "<SHIFT END>" , true
755         mywait()                
756         QueryDesignCriterion.TypeKeys "<DELETE>" , true
757         mywait()
758         QueryDesignCriterion.TypeKeys "<SHIFT PAGEUP>" , true
759         mywait()                
760         QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , 2 , true
761         mywait()                
762         QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true
763         mywait()
764         QueryDesignCriterion.TypeKeys "<SHIFT END>" , true
765         mywait()
766         QueryDesignCriterion.TypeKeys "<DELETE>" , true
767         mywait()                
768         QueryDesignCriterion.TypeKeys "IN ('Heinz','Freddi')" , true
769         mywait()
770         sleep(1)
771         'TODO: check if the right localazied string appear                
772         sleep(1)
773     Kontext "Toolbar"                
774         printlog "- Executing query"
775         ExecuteBtn.Click
776         sleep(5)
777     Kontext "TableView"
778         if TableView.Exists(3) then
779             
780                 DataWindow.TypeKeys "<MOD1 C>"
781                 if GetClipboard <> "2" then 
782                     warnlog "There should be 2 records but there are " + GetClipboard 
783                 else
784                     printlog GetClipboard + " records available."
785                 endif
786         else
787             warnlog "Execution of a query failed!"
788         end if  
789     sleep(2)
790 end sub
792 sub tTest8
793     '/// change <b>criterion</b> to <b>NOT IN ('Heinz','Freddi')</b>
794     '/// <b>execute</b> the query
795     '/// the <b>result</b> should be <b>9</b>            
796     Kontext "QueryDesignCriterion"
797         sleep(1)            
798         printlog "Go to the top left field."
799         QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
800         mywait()
801         QueryDesignCriterion.TypeKeys "<HOME>" , true
802         mywait()                
803         QueryDesignCriterion.TypeKeys "<TAB>" , true
804         mywait()                
805         QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true
806         mywait()        
807         QueryDesignCriterion.TypeKeys "<SHIFT END>" , true
808         mywait()                                
809         QueryDesignCriterion.TypeKeys "NOT IN ('Heinz','Freddi')" , true
810         mywait()
811         QueryDesignCriterion.TypeKeys "<RETURN>" , true
812         mywait()
813         'TODO: check if the right localazied string appear                
814         sleep(1)
815     Kontext "Toolbar"                
816         printlog "- Executing query"
817         ExecuteBtn.Click
818         sleep(5)
819     Kontext "TableView"
820         if TableView.Exists(3) then
821             
822                 DataWindow.TypeKeys "<MOD1 C>"
823                 if GetClipboard <> "9" then 
824                     warnlog "There should be 9 records but there are " + GetClipboard 
825                 else
826                     printlog GetClipboard + " records available."
827                 endif
828         else
829             warnlog "Execution of a query failed!"
830         end if  
831     sleep(2)
832 end sub
833 '--------------------------------------------------------------------
834 function tSortQueryWithAlias(sFileName, optional sPassword) ' test for isse 27832
836     if IsMissing(sPassword) then
837         if ( not fOpenDatabase(sFileName) ) then        
838             warnlog "Database can't be open"
839             exit function
840         endif
841     else
842         if ( not fOpenDatabase(sFileName,sPassword) ) then        
843             warnlog "Database can't be open"
844             exit function
845         endif
846     endif
847     
848     if ( fOpenNewQueryDesign ) then
849         if ( fChooseTableInQueryAddTableDialog("TT_Query1") ) then
850             Kontext "QueryDesignCriterion"
851                 sleep(1)
852                 QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true
853                 sleep(1)
854                 QueryDesignCriterion.TypeKeys "<MOD1 SHIFT DOWN>" , true
855                 sleep(1)
856                 QueryDesignCriterion.TypeKeys "<MOD1 SHIFT DOWN>" , true
857                 sleep(1)
858                 QueryDesignCriterion.TypeKeys "<DOWN>" , true
859                 sleep(1)
860                 QueryDesignCriterion.TypeKeys "test" , true
861                 sleep(1)
862             Kontext "Toolbar"                
863                 printlog "- Executing query"
864                 ExecuteBtn.Click
865                 sleep(5)
866                 
867             call fCloseQueryDesign
868             
869         endif
870     endif
871     call fCloseDatabase
872     
873 end function    
874 '--------------------------------------------------------------------
875 function fChooseTableInQueryAddTableDialog(sTableName as string) as boolean
876     
877     
878     Kontext "AddTables"
879         if ( not AddTables.exists(1) ) then
880             fChooseTableInQueryAddTableDialog = false    
881             exit function            
882         endif
883         
884     'TODO: add a test to click on the execute button, before the add table dialog is closed.
885         dim ix as integer 
886         dim i as integer
887         ix = TableName.getItemCount                
888         for i = 1 to ix
889             TableName.Select i
890             TableName.TypeKeys "<ADD>"
891             'printlog "ix = " + ix
892             'printlog "TableName.getItemCount = " + TableName.getItemCount 
893             if TableName.getItemCount > ix then
894                 ix = TableName.getItemCount
895                 'printlog "TableName.getItemCount > ix"
896             endif
897             'printlog "TableName.getSeltext = " + TableName.getSeltext
898             if TableName.getSeltext = sTableName then
899                 i = ix
900             endif
901         next
902         if TableName.getSeltext <> sTableName then
903             warnlog "Can find the table " + sTableName + "." + _
904                     "Make sure that the table exists when starting this test."
905             DatabaseClose                        
906             sleep(5)
907             Kontext "Messagebox"
908                 if Messagebox.Exists(3) then
909                     if Messagebox.getRT = 304 then
910                         Messagebox.No                        
911                     end if                        
912                 end if                
913             call hCloseDocument
914             exit function
915         endif
916         printlog "- Add " + sTableName +" table to query design"
917         '/// Add database table to Query.
918         AddTable.Click
919         sleep(2) 
920         if AddTables.exists(2) then 
921             CloseDlg.Click ' When the AddTables dialog still exists then close him
922         endif
923         sleep(1)
924         fChooseTableInQueryAddTableDialog = true
925         
926 end function
927 '--------------------------------------------------------------------
928 function fChooseQueryInQueryAddTableDialog(sQueryName as string) as boolean
929     
930     
931     Kontext "AddTables"
932         if ( not AddTables.exists(1) ) then
933             fChooseQueryInQueryAddTableDialog = false    
934             exit function            
935         endif
936         Queries.check
937         
938         
939     'TODO: add a test to click on the execute button, before the add table dialog is closed.
940         dim ix as integer 
941         dim i as integer
942         ix = QueryName.getItemCount                
943         for i = 1 to ix
944             QueryName.Select i
945             QueryName.TypeKeys "<ADD>"
946             'printlog "ix = " + ix
947             'printlog "TableName.getItemCount = " + TableName.getItemCount 
948             if QueryName.getItemCount > ix then
949                 ix = QueryName.getItemCount
950                 'printlog "TableName.getItemCount > ix"
951             endif
952             'printlog "TableName.getSeltext = " + TableName.getSeltext
953             if QueryName.getSeltext = sQueryName then
954                 i = ix
955             endif
956         next
957         if QueryName.getSeltext <> sQueryName then
958             warnlog "Can find the table " + sTableName + "." + _
959                     "Make sure that the table exists when starting this test."
960             DatabaseClose                        
961             sleep(5)
962             Kontext "Messagebox"
963                 if Messagebox.Exists(3) then
964                     if Messagebox.getRT = 304 then
965                         Messagebox.No                        
966                     end if                        
967                 end if                
968             call hCloseDocument
969             exit function
970         endif
971         printlog "- Add " + sQueryName +" table to query design"
972         '/// Add database table to Query.
973         AddTable.Click
974         sleep(2) 
975         if AddTables.exists(2) then 
976             CloseDlg.Click ' When the AddTables dialog still exists then close him
977         endif
978         sleep(1)
979         fChooseQueryInQueryAddTableDialog = true
980         
981 end function