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