merge the formfield patch from ooo-build
[ooovba.git] / testautomation / dbaccess / tools / tabletools.inc
blob0ae6f2587ae65ceb9ed5ff9869819881444c84c3
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: tabletools.inc,v $
11 '* $Revision: 1.1 $
13 '* last change: $Author: jsi $ $Date: 2008-06-16 07:43:46 $
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 : Tools for Tables
38 '************************************************************************
40 ' #1 fCloseRelationDesign
41 ' #1 fCloseTableDesign
42 ' #1 fCloseTableView
43 ' #1 fCompareMatrixValues
44 ' #1 fCreateRefFile 
45 ' #1 fCreateTable
46 ' #1 fDeleteTable
47 ' #1 fFindTable
48 ' #1 fInsertIntoTable
49 ' #1 fOpenRelationDesign
50 ' #1 fOpenNew TableDesign
51 ' #1 fOpenTable
52 ' #1 fReadFile
54 '\***********************************************************************
55 '------------------------------------------------------------------------------
56 function tCompareMatrixValues(sDSName as string, sRefFileUrl as string, cTable_or_Query as string, sTableName as string, iRowPos as integer, iColPos as integer, sWordSeperator as string) as integer
57     'sDSName = data source name f.e. Bibliography 
58     'sRefFileUrl = URL to your reference file (os indipendent - extension .ttr) f.e. base\optional\input\reference_tables\test.ttr
59     'cTable_or_Query = differ between comparing reference file with a table (t) or a query-table (q)
60     'sTableName = name of table or query-table to compare with f.e. Table1
61     'iRowPos,iColPos = row and column amount of reference and comparing table (must have the same size ; begin with 1 ; 0 is leftout, but has to be added)
63     dim i as integer 
64     dim j as integer    'counter'
65     dim aMatrix(iRowPos, iColPos) as string
66     
67     printlog ""
68     if cTable_or_Query = "t" then printlog "--- Compare Table with Reference Table ---"
69     if cTable_or_Query = "q" then printlog "--- Compare Query with Reference Table ---"
70     
71     call fReadFile(sRefFileUrl, aMatrix(), sWordSeperator)
72     
73         call hNewDocument
74     
75         '/// open Beamer and open datasource
76         ViewCurrentDatabase
77         sleep(1)
78     printlog "open database beamer"
79     
80     '/// switch between table and querie search
81     dim bfind_ok as boolean         'placeholder
82     if cTable_or_Query = "t" then
83         bfind_ok = ffindTableInBeamer(sDSName,sTableName)
84         printlog "found proper Table: " & sTableName
85     endif
86     if cTable_or_Query = "q" then
87         bfind_ok = ffindQuery(sDSName, sTableName)
88         printlog "found proper Query: " & sTableName
89     endif
90     
91     if bfind_ok then
92         '/// Choosing for the right table
93         sleep(1)
94         Kontext "DatabaseSelection"
95                 DatabaseSelection.TypeKeys "<MOD1 SHIFT E>",TRUE ' # type CTRL + SHIFT + E to go from the DatabaseSelection to the TableView'
96         sleep(1)
97         printlog "found and opened proper table"
98         '/// comparing data in table with reference table
99         printlog "start comparing data in table with reference table"
100         Kontext "TableView"  
101         dim ivalue_ok as integer
102         ivalue_ok = 0
103         TableView.TypeKeys "<TAB>",TRUE
104         TableView.TypeKeys "<HOME>",TRUE
105         TableView.TypeKeys "<HOME>",TRUE
106                 for i = 1 to iRowPos -1
107                         for j = 1 to iColPos -1
108             setclipboard("")
109                         'here the values are read out and put in clipboard for comparing
110                 TableView.TypeKeys "<MOD1 C>",TRUE
111                 TableView.TypeKeys "<TAB>",TRUE
112                 'printlog "i: " & i
113                 'printlog "j: " & j
114                 'printlog "getClipboard: " & getclipboard()
115                                 'printlog "matrix: " & aMatrix(i,j) 
116                 
117                 'here the values are compared
118                 if getclipboard() <> aMatrix(i,j) then
119                     ivalue_ok = ivalue_ok + 1
120                     warnlog ivalue_ok & ". fault in pos(row/col): " & i & "/" & j & " - should be: " & aMatrix(i,j) & " but is: " & getclipboard() 
121                 endif
122                 'printlog ivalue_ok & ". No !!! foult but TEST - should be: " & aMatrix(i,j) & " but is: " & getclipboard()
123                         next j
124         next i
125         
126         '/// Result part
127         if ivalue_ok = 0 then
128             printlog "** Comparing procedure without faults"
129             tCompareMatrixValues = ivalue_ok
130         else
131             warnlog "Comparing procedure went wrong: " + ivalue_ok + " differences found!"
132             tCompareMatrixValues = 1
133         endif
134         else
135         if cTable_or_Query = "t" then warnlog "Table: " + sTableName + " not found - Test aborted"
136         if cTable_or_Query = "q" then warnlog "Table: " + sQueryName + " not found - Test aborted"
137         endif
138     printlog "*** End Testcase"
139     sleep 1     
140     ViewCurrentDatabase
141         hCloseDocument
143 end function
144 '------------------------------------------------------------------------------
145 function fCreateRefFile(sDSName as string, cTable_or_Query as string, sTableName as string, sWordSeperator as string) as string
146     dim bfind_ok as boolean                 'check if right table found
147     dim iNumber as Integer                  'needed for open reference file
148     dim iColAmount as integer
149     dim iRowAmount as integer   'counter
150     dim sReadContCol as string
151     dim sContColMem as string 'read out content string and its memo for getting table column ammount
152     dim sCellValue as string
153     dim sCellValueMem as string 'read out content string and its memo for writing in reference table
154     
155     dim sRefTableName as string
156     sRefTableName = ConvertPath("user\work\" & sTableName & ".ttr")
157     dim sRefFileUrl as string
158     sRefFileUrl = gOfficePath & sRefTableName
159     printlog "path for reference table: " & sRefFileUrl
161     
162     call hNewDocument
163     
164     '/// open Beamer and open datasource
165     ViewCurrentDatabase
166     sleep(1)
167     printlog "open database beamer"
168     
169     '/// switch between table and querie search
170     if cTable_or_Query = "t" then
171         printlog "search for proper Table: " & sTableName
172         bfind_ok = ffindTableInBeamer(sDSName,sTableName)
173     endif
174     if cTable_or_Query = "q" then
175         printlog "search for proper Query: " & sTableName
176         bfind_ok = ffindQuery(sDSName, sTableName)
177     endif
178     
179     if bfind_ok then
180         '/// jumping to the right table
181         sleep(1)
182         Kontext "DatabaseSelection"
183                 DatabaseSelection.TypeKeys "<MOD1 SHIFT E>",TRUE ' # type CTRL + SHIFT + E to go from the DatabaseSelection to the TableView'
184         sleep(1)
185         
186         '/// check the row and column amount
187         printlog "check the row and column amount"
188         Kontext "TableView"  
189         sReadContCol = 1   'init
190         sContColMem = 1    'init
191         iColAmount = 0     'init
192         iRowAmount = AllRecords.caption()
193         while sReadContCol = sContColMem
194             sContColMem = sReadContCol
195             sReadContCol = CurrentRecord.getText()
196             TableView.TypeKeys "<TAB>",TRUE
197             TableView.TypeKeys "<TAB>",TRUE
198             iColAmount = iColAmount +1
199         wend
200         iColAmount = iColAmount -1
201         'printlog "sReadContCol: " & sReadContCol
202         printlog "size of table (columns/rows): " & iColAmount & "/" & iRowAmount
203         fCreateRefFile = iColAmount & "," & iRowAmount
204         TableView.TypeKeys "<UP>",TRUE
205         TableView.TypeKeys "<HOME>",TRUE
206         TableView.TypeKeys "<HOME>",TRUE
207         sleep(1)
209         '/// reading out values from table, create a reference table and input values in
210         printlog "start reading out values from table and writing in ref table"
211         iNumber = Freefile
212         dim i,j as integer              'counter    
213         Open sRefFileUrl for Output as iNumber
214             for i = 1 to iRowAmount
215                 for j = 1 to iColAmount
216                     Kontext "TableView"
217                     TableView.TypeKeys "<MOD1 C>"
218                     sCellValue = getclipboard()
219                     TableView.TypeKeys "<TAB>"
220                     if j <> 1 then 
221                         sCellValueMem = sCellValueMem & sWordSeperator
222                     endif
223                     sCellValueMem = sCellValueMem & sCellValue
224                     'printlog i & j & " inhalt: " & sCellValue
225                     setclipboard("")
226                 next j
227             print #iNumber, sCellValueMem
228             sCellValueMem = ""
229             next i
230         Close #iNumber
231         sleep(1)
232         
233         '/// warning if table not found - without proper table the test make no sense
234     else
235         warnlog "Table: " + sTableName + " not found."
236         fCreateRefFile = ""        
237     endif
238     
239     sleep 1     
240     ViewCurrentDatabase
241         hCloseDocument
243 end function
244 '------------------------------------------------------------------------------
245 function fReadFile(sRefFileUrl as string, aMatrix() as string, sWordSep as string)
246     'connecting and opening file
247      dim iNumber as Integer
248      iNumber = Freefile
249      'position and content variables
250      dim sColumn As String
251      dim iRowPos as integer
252      dim iColPos as integer
253      dim iPos as integer
254      dim iPos1 as integer            'pointer for searching position
255      
256      'init position in matrix
257      iRowPos = 1
258      iColPos = 1
259      
260      '/// open reference file and store it into an array (matrix)
261      printlog "search for the reference file, open it and store content in an array"
262      sRefFileUrl = gOfficePath + ConvertPath(sRefFileUrl)
263      Open sRefFileUrl for Input as iNumber
264      while not eof(iNumber)
265         Line Input #iNumber, sColumn
266         iPos1 = 1                               'startposition
267         iPos = 1                                'startposition
268         while iPos <> 0                         'if iPos = 0 then no more sWordSeperator found -> end of column reached
269             iPos = Instr(iPos +1,sColumn,sWordSep)   'check column for sWordSeperator
270             'printlog "iPos: " & iPos
271             'printlog "iPos1: " & iPos1
272             if iPos <> 1 then                   '<> 1 -> no content found
273                 aMatrix(iRowPos,iColPos) = Mid(sColumn,iPos1,iPos - iPos1)  'cut content and put into array
274                 'printlog "iRow: " & iRowPos
275                 'printlog "iCol: " & iColPos
276                 'printlog "aMatrix: " & aMatrix(iRowPos,iColPos)
277                 iPos1 = iPos +1
278                 iColPos = iColPos +1
279             else warnlog "reference file is empty"
280             endif
281         wend    
282             iRowPos = iRowPos +1
283             iColPos = 1           
284      wend
285      printlog "**end of reading out reference table"
286 end function
287 '--------------------------------------------------------------------
288 function fCreateTable(aFieldTypeContent(),sTableName,optional sCatalog,optional sSchema)
289     '/// create a table with the given FieldTypes
290     '/// sSchema and sCatalog are optional.
291     '/// If the optional parameter is not given then it's set to ""
292     '/// <u>parameter:</u>
293     '/// <b>aFieldTypeContent:</b> an arry with the table field data
294     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the array have to look like the following
295     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(1,1) = first_field_name
296     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(1,2) = first_field_type
297     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(2,1) = second_field_name
298     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(2,2) = second_field_type
299     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...
300     '/// <b>sTableName:</b> the name of the table
301     '/// <b><i>optional</i> sCatalog:</b> the name of the table catalog
302     '/// <b><i>optional</i> sSchema:</b> the name of the table schema
303         
304     Dim i as integer                            'counter
305         Dim iFieldNumber as integer                     'counter
306         dim iNoDS as integer                'number of data source in listbox
307         Dim iNumberOfFieldTypes as integer          'field type memory
308         Dim iFieldTypesCounter as integer   'counter
309         Dim iIndex as integer               'counter
310         Dim sFieldType as string            'help var for fieldtypes
311     Dim sTypeName as String             'help var for fieldtypes
312     
313     if ( IsMissing(sCatalog) ) then
314         sCatalog = ""
315     endif
316     
317     if ( IsMissing(sSchema) ) then
318         sSchema = ""
319     endif
320     
321     call fDeleteTable(sTableName) ' delete the table if exists
322     
323     call fOpenNewTableDesign    
324     
325     Kontext "TableDesignTable"
326     
327     for iFieldNumber = 1 to ubound(aFieldTypeContent) - 1
329         printlog "create field : " + aFieldTypeContent(iFieldNumber,1)
330         Fieldname.TypeKeys aFieldTypeContent(iFieldNumber,1) , TRUE    
331         Fieldname.TypeKeys "<RETURN>" , TRUE
332         sleep 1
333         sTypeName = "[ " + aFieldTypeContent(iFieldNumber,2) + " ]"
334         iNumberOfFieldTypes = FieldType.getitemCount()
335         for iFieldTypesCounter = 1 to iNumberOfFieldTypes                 
336             sFieldType = FieldType.getitemText(iFieldTypesCounter)            
337             iIndex = Instr(sFieldType,sTypeName)                
338             if iIndex <> 0 then
339                 printlog "FieldType : " + sFieldType
340                 iFieldTypesCounter = iNumberOfFieldTypes ' stops the for loop if proper fieldtype found'
341             endif
342         next
343         '/// choose proper field type
344         FieldType.Select(sFieldType)    'listbox entry nr'
345         sleep 1
346         FieldType.TypeKeys "<RETURN>" , TRUE
347         Description.TypeKeys "<RETURN>" , TRUE
348         printlog "-------------------------------"
349     next 
350     sleep(1)    
351     Kontext "TableDesignTable"         
352         TableDesignTable.usemenu
353         MenuSelect MenuGetItemId (1)
354         sleep(1)
355         menuselect MenuGetItemId (7)
356         sleep(1)        
357     Kontext "DatabaseTableSaveAs"
358         printlog "save table as "+ sTableName
359         TableName.setText sTableName
360         sleep(1)
361         '/// catalog handling
362         if sCatalog <> "" then
363             if Catalog.IsVisible then
364                 Catalog.SetText sCatalog
365                 printlog "inserting catalog name: " + sCatalog
366             else 
367                 warnlog "The Catalog-Name could not be inserted"
368             endif
369         endif
370         '/// schema handling
371         if sSchema <> "" then
372             if Schema.IsVisible then
373                 Schema.SetText sSchema
374                 printlog "inserting schema name: " + sSchema
375             else 
376                 warnlog "The Schema-Name could not be inserted"
377             endif
378         endif
379         DatabaseTableSaveAs.OK
380         sleep 1
381         Kontext "Messagebox"
382         if Messagebox.Exists(1) then
383             Messagebox.Yes  
384             printlog "create a primary key "
385         end if
386         sleep 1 
387         
388         ' a sql exception appear. Try to get the error text
389         Kontext "Messagebox"
390         if Messagebox.Exists(1) then            
391                 MessageBox.Click 5 ' click the more button
392                         Kontext "SQLException"
393                         if SQLException.exists() then
394                         warnlog Errortext.getText()
395                 SQlException.OK
396                         end if
397             Kontext "MessageBox"
398             MessageBox.OK
399         end if
400         
401         call fCloseTableDesign
402         
403 end function
404 '--------------------------------------------------------------------
405 function fDeleteTable(sTableName as string)  
406     '/// delete the table with the given name
407     '/// <u>parameter:</u>
408     '/// <b>sTableName:</b> the table which shall be deleted
409     if ( fFindTable(sTableName) = true ) then
410         printlog "Table found press delete"    
411         Kontext "ContainerView"        
412             'TableTree.TypeKeys "<DELETE>" , true
413             Delete ' uno-Slot .uno:DB/Delete
414             sleep(1)
415         Kontext "Active"
416             Active.Yes
417         fDeleteTable = true
418     else
419         fDeleteTable = false
420     end if
421     
422 end function
423 '--------------------------------------------------------------------
424 function fOpenTable(sTableName as string)    
425     '/// open the table with the given name
426     '/// <u>parameter:</u>
427     '/// <b>sTableName:</b> the table which shall be opened    
428     if ( fFindTable(sTableName) = true ) then
429         printlog "Table found -> open"    
430         Kontext "ContainerView"
431             OpenTable ' uno-Slot .uno:DB/Open
432             sleep(1)
433         fOpenTable = true
434     else
435         fOpenTable = false
436     end if
437     
438 end function
439 '--------------------------------------------------------------------
440 function fFindTable(sTableName as string) 
441         '/// select the table with the given name in the table container
442     '/// <u>parameter:</u>
443     '/// <b>sTableName:</b> the table which shall be selected
444             
445     Dim iNumbersOfTables as integer
446         Dim i as integer
447         
448     Kontext "ContainerView"
449     
450         ViewTables        
451     
452         fFindTable = false
453     
454         if ( Not TableTree.exists(1) ) then
455             qaerrorlog "The table tree doesn't exists"
456             ' May be a messagebox appear click OK to close it
457             Kontext "MessageBox"
458                 if MessageBox.exists(1) then
459                     qaerrorlog MessageBox.getText()
460                     while MessageBox.exists() ' sometimes there are more then 1 message boxe
461                         MessageBox.OK
462                     wend
463                 endif            
464             exit function
465         end if
466         
467         iNumbersOfTables = TableTree.getItemCount()
469         ' this select the first entry
470         TableTree.TypeKeys "<HOME>"
471         TableTree.TypeKeys "<UP>"
472         
473         
474         for i = 1 to iNumbersOfTables
475             
476             TableTree.TypeKeys "<ADD>"
477             'printlog "i = " + i
478             'printlog "TableName.getItemCount = " + TableTree.getItemCount 
479             if TableTree.getItemCount >  iNumbersOfTables then
480                 iNumbersOfTables = TableTree.getItemCount()                    
481             endif
482             'printlog "TableName.getSeltext = " + TableTree.getSeltext
483             if TableTree.getSeltext = sTableName then
484                 fFindTable = true    
485                 exit for
486             endif
487             TableTree.TypeKeys "<DOWN>"
488         next
489         sleep(1)        
490     
491 end function
492 '--------------------------------------------------------------------
493 function fInsertIntoTable( aFieldContent(), sTableName)
494     '/// insert data into a table
495     '/// <u>parameter:</u>
496     '/// <b>aFieldContent:</b> an arry with the table data
497     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the array have to look like the following
498     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(1,1) = first_value_for_first_record
499     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(1,2) = second_value_for_first_record
500     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(2,1) = first_value_for_second_record
501     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array(2,2) = second_value_for_second_record
502     '/// &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...
503     '/// <b>sTableName:</b> the name of the table
504         
505     Dim iCounterOfRecords as integer    
506     Dim iCounterOfFields as integer
507     
508     Dim iNumberOfRecords as integer    
509     Dim iNumberOfFields as integer
510         
511     iNumberOfRecords = ubound(aFieldContent)
512     iNumberOfFields = ubound(aFieldContent,2)
513     
514         call fOpenTable(sTableName)
515         
516         Kontext "TableView"
517                 for iCounterOfRecords = 1 to iNumberOfRecords
518             for iCounterOfFields = 1 to iNumberOfFields
519                 TableView.TypeKeys aFieldContent(iCounterOfRecords,iCounterOfFields),TRUE
520                 TableView.TypeKeys "<TAB>",TRUE
521             next
522         next
523         
524     
525     sleep 1     
526     
527         call fCloseTableView
529 end function
530 '-------------------------------------------------------------------------
531 function fCloseTableDesign(optional bSave) 
532     '/// close an open table design
533     '/// <u>parameter:</u>    
534     '/// <b><i>optional</i> bSave:</b> if true then the table design is saved
536     sleep(1)
538     Kontext "TableDesignTable"
539         TableDesignTable.UseMenu
540         ' bug file / close close the whole database
541         hMenuSelectNr(1) ' the file menu
542         hMenuSelectNr(4) ' the Close Window
543         
544         'hMenuSelectNr(6) ' the window menu
545         'hMenuSelectNr(1) ' the Close Window        
546                 
547     Kontext "Messagebox"
548         if Messagebox.Exists(3) then
549             Messagebox.No
550         end if
551         
552     fCloseTableDesign = true
553 end function
554 '-------------------------------------------------------------------------
555 function fCloseTableView() 
556     '/// close an open table view
557     '/// <u>parameter:</u>
559     sleep(1)
561     Kontext "TableView"
562         TableView.UseMenu
563         ' bug file / close close the whole database
564         'hMenuSelectNr(1) ' the file menu
565         'hMenuSelectNr(4) ' the Close Window
566         
567         hMenuSelectNr(6) ' the window menu
568         hMenuSelectNr(1) ' the Close Window        
569     ' if messages box appear because of unsaved record click no in the dialog
570     Kontext "Messagebox"
571         if Messagebox.Exists(3) then
572             Messagebox.No
573         end if
574         
575     fCloseTableView = true
576 end function
577 '-------------------------------------------------------------------------
578 function fOpenRelationDesign()
579     '/// open a new relation design
580     '/// <u>parameter:</u>    
581     
582     Kontext "DATABASE"    
583             if ( Database.NotExists(3) ) then
584                 fOpenRelationDesign = false
585                 exit function
586             end if
588         Database.MouseDown(50,50)
589         Database.MouseUp(50,50)
590     
591     sleep(1)
592     
593     Database.UseMenu
594     hMenuSelectNr(5)
595     hMenuSelectNr(1)
596     
597     fOpenRelationDesign = true
598 end function
599 '-------------------------------------------------------------------------
600 function fCloseRelationDesign(optional bSave)    
601     '/// close an open relation design
602     '/// <u>parameter:</u>    
603     '/// <b><i>optional</i> bSave:</b> if true then the relation design is saved
606     Kontext "RelationDesign"
607         RelationDesign.UseMenu
608         ' bug file / close close the whole database
609         hMenuSelectNr(1) ' the file menu
610         hMenuSelectNr(4) ' the Close Window
611         
612         'hMenuSelectNr(6) ' the window menu
613         'hMenuSelectNr(1) ' the Close Window        
614                 
615     Kontext "Messagebox"
616         if Messagebox.Exists(3) then
617             if ( IsMissing( bSave ) ) then
618                 Messagebox.No
619             else
620                 if bSave then
621                     Messagebox.Yes
622                 else
623                     Messagebox.No
624                 endif
625             endif
626         end if
627         
628     fCloseRelationDesign = true
629 end function
630 '-------------------------------------------------------------------------
631 function fOpenNewTableDesign
632     printlog "fOpenNewTableDesign called"
634     printlog "check if Database exists"
635     
636     Kontext "DATABASE"    
637         Database.MouseDown(50,50)
638         Database.MouseUp(50,50)
639     
640     if ( Database.NotExists(3) ) then
641         fOpenNewTableDesign = false
642         warnlog "The Database windows doesn't exists"
643         exit function
644     end if
645     
646     sleep(1)
647     
648     printlog "open new table design"
649     
650     NewTableDesign
652     sleep(2)    
654     fOpenNewTableDesign = true    
656 end function
657 '-------------------------------------------------------------------------
658 function fOpenTableInDesign(sTableName as String)
659     printlog "fOpenTableInDesign called"
661     printlog "check if Database exists"
662     
663     Kontext "DATABASE"    
664         Database.MouseDown(50,50)
665         Database.MouseUp(50,50)
666     
667     if ( Database.NotExists(3) ) then
668         fOpenTableInDesign = false
669         warnlog "The Database windows doesn't exists"
670         exit function
671     end if
672     
673     sleep(1)
674     
675     printlog "open new table design"
677     call fFindTable(sTableName)
679     EditTable
681     Kontext "TableDesignTable"
682     if ( not TableDesignTable.exists(3) ) then
683         warnlog "The Table design doesn't open"
684         fOpenTableInDesign = false
685         exit function
686     end if
687     
688     fOpenTableInDesign = true    
690 end function
691 '-------------------------------------------------------------------------
692 function fFindTableInBeamer(sDSName1,sTableName1)
693     '/// select a table with the given name in the beamer 
694     '/// <u>parameter:</u>
695     '/// <b>sDSName1:</b> the name of the datasource
696     '/// <b>sTableName1:</b> the name of the table
697     
698         dim i as integer
699         dim bfindTable as boolean
700         dim iNoDS as integer
701     dim iNoTable as integer
702     
703     bfindTable = false
704         Kontext "DatabaseBeamer"
705     Kontext "DatabaseSelection"
706                 
707     iNoDS = DatabaseSelection.getItemCount      
708         for i = 1 to iNoDS
709                 DatabaseSelection.Select i
710                 if DatabaseSelection.getText = sDSName1 then
711                         i = iNoDS
712             bfindTable = true
713                 endif
714         next i
715         
716     if (bfindTable = false) then
717         warnlog "Datasource " + sDSName + " not found!"
718         exit function
719     else
720         printlog "Datasource " + sDSName + " found!"
721         ' I set the bfindTable flag again back to false
722         ' for the next test of the table
723         bfindTable = false
724     endif
725     
726     wait 500
727         DatabaseSelection.TypeKeys "<ADD>" , true
728     wait 500
729         DatabaseSelection.TypeKeys "<DOWN>" , true
730     wait 500
731         DatabaseSelection.TypeKeys "<DOWN>" , true
732     wait 500
733         DatabaseSelection.TypeKeys "<ADD>" , true
734     wait 500
735         DatabaseSelection.TypeKeys "<DOWN>" , true
736     wait 500
737         
738         
739     iNoTable = DatabaseSelection.getItemCount
740     dim ii as integer
741     ii = DatabaseSelection.GetSelIndex  
742         for i = ii to iNoTable
743                 DatabaseSelection.Select i
744                 if DatabaseSelection.getText = sTableName1 then
745                         i = iNoTable
746                     sleep 1                     
747                     bfindTable = true
748                 endif
749         next i
750         
751     fFindTableInBeamer = bfindTable
752         
753 end function
754 '-------------------------------------------------------------------------
755 function fStartTableWizard()
756     '/// start the table wizard 
757     '/// <u>parameter:</u>    
759     Kontext "DATABASE"    
760             if ( Database.NotExists(3) ) then
761                 fStartTableWizard = false
762                 exit function
763             end if
765         Database.MouseDown(50,50)
766         Database.MouseUp(50,50)
767     
768     sleep(1)
769     
770     ViewTables
771     StartTableWizard
772     
773     sleep(2)
774     
775     fStartTableWizard = true
776     
777 end function