'encoding UTF-8 Do not remove or change this line! '************************************************************************** ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ' ' Copyright 2000, 2010 Oracle and/or its affiliates. ' ' OpenOffice.org - a multi-platform office productivity suite ' ' This file is part of OpenOffice.org. ' ' OpenOffice.org is free software: you can redistribute it and/or modify ' it under the terms of the GNU Lesser General Public License version 3 ' only, as published by the Free Software Foundation. ' ' OpenOffice.org is distributed in the hope that it will be useful, ' but WITHOUT ANY WARRANTY; without even the implied warranty of ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ' GNU Lesser General Public License version 3 for more details ' (a copy is included in the LICENSE file that accompanied this code). ' ' You should have received a copy of the GNU Lesser General Public License ' version 3 along with OpenOffice.org. If not, see ' ' for a copy of the LGPLv3 License. ' '/************************************************************************ '* '* owner : marc.neumann@sun.com '* '* short description : Base Level 1 Create Relations between Test Tables '* '\*********************************************************************** function tRelation( sFileName, sPWD, sRelTable1, sRelTable2 ) '/// create an 1:1 and 1:n relation between two test tables Dim i as integer 'counter Dim j as integer 'counter Dim ix as integer 'counter Dim iNoDS as integer 'number of data source in listbox Dim iNoTab as integer 'number of tables in grid Dim DSOK as boolean 'datasource present check call fOpenDatabase(sFileName, sPWD) call fOpenRelationDesign '/// searching and adding of the two needed testtables bDelete_Container() 'delete all disturbing table container sleep(1) '/// insert add tables dialog if not present Kontext "AddTables" if (AddTables.exists(1) = false) then printlog "open add table dialog" Kontext "RelationDesign" sleep(1) RelationDesign.UseMenu sleep(1) hMenuSelectNr (4) sleep(1) hMenuSelectNr (2) sleep(1) endif sleep(1) 'call fChooseTableInAddTableDialog(sRelTable1) '/// searching and adding the two needed testtables Kontext "AddTables" dim sRelTable as string 'buffer variable dim breltablefound as integer 'control if both needed table are found breltablefound = 0 for j = 1 to 2 if j = 1 then sRelTable = sRelTable1 'first table else sRelTable = sRelTable2 'second table endif ix = TableName.getItemCount for i = 1 to ix TableName.Select i TableName.TypeKeys "" 'adding test table if TableName.getItemCount > ix then ix = TableName.getItemCount endif if TableName.getSeltext = sRelTable then printlog "table found: " + sRelTable breltablefound = breltablefound +1 i = ix endif next i sleep(1) AddTable.Click sleep(1) next j CloseDlg.Click if breltablefound <> 2 then 'two needed tables not found if variable <> 2 warnlog "proper tables: " + sRelTable1 + " and/or " + sRelTable2 + " not found - test abort" call fCloseRelationDesign call fCloseDatabase exit function else printlog "both needed tables found and added" endif sleep(1) Kontext "RelationDesign" '/// open relation property menue sleep(1) RelationDesign.UseMenu sleep(1) hMenuSelectNr (4) sleep(1) hMenuSelectNr (1) sleep(1) Kontext "RelationProperties" '/// create 1:1 relation: open relation design and choose the ID fields from each table/listbox sleep(1) printlog "open relation design and choose the ID fields from each table/listbox" RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE ' RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE ' RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.OK printlog "1:1 relation between test tables created" sleep(1) Kontext "RelationDesign" '/// delete relation connector dim k as integer 'injurance that routine do not loop dim l as integer 'buffer for hMenuItemGetCount k = 0 Do '/// checkout wich kontext has two entries (only relation connector has) Kontext "RelationDesign" RelationDesign.TypeKeys "",TRUE sleep(1) RelationDesign.TypeKeys "",TRUE sleep(1) try l = hMenuItemGetCount catch endcatch MenuSelect 0 sleep(1) k = k + 1 'printlog "k = " + k 'printlog "hMenuItemGetCount = " + l Loop Until k = 10 or l = 2 if k = 10 then warnlog "abort deleting relation: searching for relation connector went wrong" endif printlog "relation connector deleted" RelationDesign.TypeKeys "",TRUE hMenuSelectNr (1) sleep(1) '/// create 1:n relation Kontext "RelationDesign" '/// open relation property menue printlog "open relation property menue for 1:n relation" sleep(1) RelationDesign.UseMenu sleep(1) hMenuSelectNr (4) sleep(1) hMenuSelectNr (1) sleep(1) Kontext "RelationProperties" '/// open relation design and change listbox content printlog "open relation design and choose proper fields from table/listbox" RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.OK printlog "1:n relation between test tables created" sleep (1) bDelete_Container() 'delete all table container to leave place clear sleep (1) fCloseRelationDesign(true)'close relation design and save it" call fCloseDatabase end function '------------------------------------------------------------------------- function tDoubleRelation( sFileName, sPWD, sRelTable1, sRelTable2, sRelTable3 ) '/// create an 1:1 relation, close and save relation dialog, '/// reopen the dialog and add an 1:n relation with third test table Dim i as integer 'counter Dim j as integer 'counter Dim ix as integer 'counter Dim iNoDS as integer 'number of data source in listbox Dim iNoTab as integer 'number of tables in grid Dim DSOK as boolean 'datasource present check call fOpenDatabase(sFileName, sPWD) call fOpenRelationDesign '/// searching and adding of the two needed testtables bDelete_Container() 'init '/// insert add tables dialog if not present Kontext "AddTables" if (AddTables.exists(1) = false) then '/// open add table dialog printlog "open add table dialog" Kontext "RelationDesign" sleep(1) RelationDesign.UseMenu sleep(1) hMenuSelectNr (4) sleep(1) hMenuSelectNr (2) sleep(1) endif sleep(1) '/// add the needed testtables Kontext "AddTables" dim sRelTable as string 'buffer for tablenames dim breltablefound as integer 'control if both needed table are found breltablefound = 0 for j = 1 to 2 if j = 1 then sRelTable = sRelTable1 'first table else sRelTable = sRelTable2 'second table endif ix = TableName.getItemCount for i = 1 to ix TableName.Select i TableName.TypeKeys "" if TableName.getItemCount > ix then ix = TableName.getItemCount endif if TableName.getSeltext = sRelTable then printlog "table found: " + sRelTable breltablefound = breltablefound +1 i = ix endif next i sleep(1) AddTable.Click sleep(1) next j CloseDlg.Click if breltablefound <> 2 then 'two needed tables not found if variable <> 2 warnlog "proper tables: " + sRelTable1 + " and/or " + sRelTable2 + " not found - test abort" call fCloseRelationDesign call fCloseDatabase exit function else printlog "both tables found and added" endif sleep(1) '/// create 1:1 relation Kontext "RelationDesign" '/// open relation property menue printlog "open relation property menue" sleep(1) RelationDesign.UseMenu sleep(1) hMenuSelectNr (4) sleep(1) hMenuSelectNr (1) sleep(1) Kontext "RelationProperties" '/// open relation design and choose proper fields from table/listbox printlog "open relation design and choose proper fields from table/listbox" RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.OK printlog "1:1 relation between test tables created" '/// close and save relation design and save design call fCloseRelationDesign(true) '/// Second Part: adding 1:n relation printlog "" printlog "Second Part: adding 1:n relation" call fOpenRelationDesign '/// insert add tables dialog if not present Kontext "AddTables" if (AddTables.exists(1) = false) then '/// open add table dialog printlog "open add table dialog" Kontext "RelationDesign" sleep(1) RelationDesign.UseMenu sleep(1) hMenuSelectNr (4) sleep(1) hMenuSelectNr (2) sleep(1) endif sleep(1) '/// searching and adding proper table Kontext "AddTables" breltablefound = 0 for j = 1 to 1 sRelTable = sRelTable3 'third table ix = TableName.getItemCount for i = 1 to ix TableName.Select i TableName.TypeKeys "" if TableName.getItemCount > ix then ix = TableName.getItemCount endif if TableName.getSeltext = sRelTable then printlog "table found: " + sRelTable breltablefound = breltablefound +1 i = ix endif next i sleep(1) AddTable.Click sleep(1) next j CloseDlg.Click if breltablefound <> 1 then 'needed table not found if variable <> 1 warnlog "proper table: " + sRelTable3 + " not found - test abort" call fCloseRelationDesign call fCloseDatabase exit function else printlog "third table found and added" endif sleep(1) '/// add 1:n relation Kontext "RelationDesign" '/// open relation property menue printlog "open relation property menue" sleep(1) RelationDesign.UseMenu sleep(1) hMenuSelectNr (4) sleep(1) hMenuSelectNr (1) sleep(1) Kontext "RelationProperties" '/// open relation design and choose the proper fields from table/listbox printlog "open relation design and choose the proper fields from table/listbox" RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.TypeKeys "",TRUE RelationProperties.TypeKeys "",TRUE sleep(1) RelationProperties.OK Kontext "MessageBox" if MessageBox.exists(1) then MessageBox.OK Kontext "RelationProperties" RelationProperties.OK endif printlog "1:n relation between test tables created" sleep(1) bDelete_Container() 'delete all table container to leave place clear sleep (1) call fCloseRelationDesign 'close relation design and save init design" call fCloseDatabase end function function bDelete_Container() as boolean dim bcontainer_exist as boolean bcontainer_exist = true '/// delete container if present Do sleep(2) Kontext "RelationDesign" RelationDesign.MouseDown(2,2) RelationDesign.MouseUp(2,2) sleep(1) RelationDesign.TypeKeys "",TRUE sleep(2) Kontext "MessageBox" '/// container present if opening context menue possible if MessageBox.exists(2) then MessageBox.Yes else bcontainer_exist = false endif Loop Until bcontainer_exist = false printlog "deleted container to init relation design" end function