//**************************************************************************** // $Module type: CLASS // $Module name: cDbComboformDataTable // $Author : Nils G. Svedmyr // Created : 2002-07-22 @ 09:00 // // Description : // // $Rev History // 2002-07-22 Module header created //**************************************************************************** Use cRDSDbComboform.pkg Use SyncFuncs.pkg Open SncTable // Visual DataFlex 12.0 Migration Utility, added March 28, 2007: 15:13:24 #IF (!@ >= 120) { OverrideProperty=Entry_State InitialValue=False } { OverrideProperty=Combo_Sort_State InitialValue=True } { OverrideProperty=Label_Row_Offset InitialValue=0 } { OverrideProperty=Label_Col_Offset InitialValue=2 } { OverrideProperty=Label_Justification_Mode InitialValue=jMode_Right } { OverrideProperty=Label_Justification_Mode EnumList="jMode_Right, jMode_Left, jMode_Center" } { OverrideProperty=Size InitialValue=13,144 } #ENDIF Class cDbComboformDataTable Is A cRDSDbComboform Procedure Construct_Object Handle ho Forward Send Construct_Object Property Handle phoDD (Main_DD(Self)) Property Integer piDbType 0 // Visual DataFlex 12.0 Migration Utility, added March 28, 2007: 15:13:25 #IF (!@ >= 120) { InitialValue=True } #ENDIF Property Boolean pbFrom True Property String psNone "" Property String Private.psServer "" Property Handle Private.phoArray 0 Set Oem_Translate_State To False Get Create U_Array To ho Set Private.phoArray To ho On_Key Key_Alt+Key_Z Send DoDeleteRecords // This will zerofile the table if proper password is entered. On_Key Key_Ctrl+Key_Z Send DoDeleteRecords End_Procedure // Construct_Object Procedure End_Construct_Object Forward Send End_Construct_Object Set Entry_State Item 0 To False // Override object settings. // We need to set sort_state to False, else // we can't set the proper current_item: Set Combo_Sort_State To False //True End_Procedure // End_Construct_Object Procedure DoEnableDisable Integer iDbType Integer iOldDbType iFile iField Get piDbType To iOldDbType Set piDbType To iDbType // If (iOldDbType <> iDbType) Send DoCheckClear End_Procedure // DoEnableDisable Procedure DoCheckClear Integer iItem iFile iField Send Combo_Delete_Data Send Combo_Add_Item (psNone(Self)) Get WinCombo_Item_Matching (psNone(Self)) To iItem If (iItem > -1) Set WinCombo_Current_Item To iItem Get Data_File To iFile Get Data_Field To iField Set File_Field_Changed_Value Of (phoDD(Self)) iFile iField To "" Broadcast Recursive Send DoUpdateData Of (RdsMain_Panel_Id(Self)) 0 0 (pbFrom(Self)) End_Procedure // DoCheckClear Procedure DoSetDefaults Handle hoDD Integer iFile iField iItem Get Data_File To iFile Get Data_Field To iField Get phoDD To hoDD If Not (Current_Record(hoDD)) Begin Send Combo_Delete_Data Send Combo_Add_Item (psNone(Self)) Get WinCombo_Item_Matching (psNone(Self)) To iItem If (iItem > -1) Set WinCombo_Current_Item To iItem End // If Not (Current_Record(hoDD)) Begin End_Procedure // DoSetDefaults // This is send from the DDO upon finding a record: Procedure DoFindData Send DoRefreshCombo End_Procedure // DoFindData // Is send from cDbComboformServer class when finding a record: Procedure DoRefreshCombo Send DoComboFillList Send DoComboUpdate End_Procedure // DoRefreshCombo // Is send from DoRefreshCombo and OnCloseUp in this class: Procedure DoComboUpdate Handle hoDD hoFrom hoTo hoDD2 Integer iFromFile iToFile iOpen iRetval iFile iField iDbType String sDesc sFromTable sToTable sFromType sToType Boolean bTableChanged bFrom Get pbFrom To bFrom Get phoDD To hoDD If (bFrom) Get Field_Current_Value Of hoDD Field SncTable.FromDbType To iDbType Else Get Field_Current_Value Of hoDD Field SncTable.ToDbType To iDbType Send DoOpenTable Get Field_Current_Value Of hoDD Field SncTable.FromFile To iFromFile Get Field_Current_Value Of hoDD Field SncTable.ToFile To iToFile Get Field_Current_Value Of hoDD Field SncTable.Text To sDesc // Auto set Description field value if not set previously: (SncTable.Text) If (Not(Current_Record(hoDD))) Begin Get Field_Current_Value Of hoDD Field SncTable.FromDataTable To sFromTable Get Field_Current_Value Of hoDD Field SncTable.ToDataTable To sToTable Move (Trim(sFromTable)) To sFromTable Move (Trim(sToTable)) To sToTable //showln "(Not(Current_Record(hoDD)) = " (Not(Current_Record(hoDD))) " sFromTable = " sFromTable " sToTable = " sToTable If (sFromTable Contains (psNone(Self)) Or Length(sFromTable) = 0 Or sToTable Contains (psNone(Self)) Or Length(sToTable) = 0) Break // Since these objects are based on DDO code validation objects, just get the window value: Get DDObjectId hoDD SncTable.File_Number "FromDbType" To hoFrom Get DDObjectId hoDD SncTable.File_Number "ToDbType" To hoTo Get Value Of hoFrom Item 0 To sFromType Get Value Of hoTo Item 0 To sToType If (sFromType Contains "ODBC") Move "ODBC" To sFromType If (sFromType Contains "Btrieve") Move "Pervasive.SQL" To sFromType If (sToType Contains "Btrieve") Move "Pervasive.SQL" To sToType If (sFromType Contains "IBM DB2") Move "IBM DB2" To sFromType If (sToType Contains "IBM DB2") Move "IBM DB2" To sToType Set Field_Changed_Value Of hoDD Field SncTable.Text To ; (Trim(sFromType) * "-" * sFromTable * "->" * Trim(sToType) * "-" * sToTable) End // If (Not(Current_Record(hoDD))) Begin If iFromFile Begin Get_Attribute DF_FILE_OPENED Of iFromFile To iOpen If Not iOpen Move 0 To iFromFile End // If iFromFile Begin If iToFile Begin Get_Attribute DF_FILE_OPENED Of iToFile To iOpen If Not iOpen Move 0 To iToFile End // If iToFile Begin // This will tell other objects of the "new" tables and will fill data there: Broadcast Recursive Send DoUpdateData Of (RdsMain_Panel_Id(Self)) iFromFile iToFile bFrom End_Procedure // DoComboUpdate Procedure OnCloseUp Handle hoDD ho Integer iFile iField iItem String sOldValue sNewValue sSchema sOldSchema If (piDbType(Self) = 1) Procedure_Return Get phoDD To hoDD Get Data_File To iFile Get Data_Field To iField Get File_Field_Current_Value Of hoDD iFile iField To sOldValue Forward Send OnCloseUp Get File_Field_Current_Value Of hoDD iFile iField To sNewValue Move (Trim(sOldValue)) To sOldValue Move (Trim(sNewValue)) To sNewValue If (sOldValue <> sNewValue) Begin If (piDbType(Self) = 2) Begin // IBM DB2 Get Wincombo_Current_Item To iItem If (iItem > 1) Begin // Item 1 is " " Get Private.phoArray To ho Get String_Value Of ho Item iItem To sSchema // Schema or Owner name for the selected table. // NOTE: KEEP THIS UNTIL BEN FIXED PROBLEM WITH GETTING THE RIGHT SCHEMA NAME: ????? If (Length(sSchema) > 0) Begin If (pbFrom(Self)) Begin Get Field_Current_Value Of (phoDD(Self)) Field SncTable.FromOwner To sOldSchema If (Trim(sSchema) <> Trim(sOldSchema)) ; Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.FromOwner To sSchema End // If (pbFrom(Self)) Begin Else Begin Get Field_Current_Value Of (phoDD(Self)) Field SncTable.ToOwner To sOldSchema If (Trim(sSchema) <> Trim(sOldSchema)) ; Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.ToOwner To sSchema End // Else Begin End // If (Length(sSchema) > 0) Begin End // If (iItem > 1) Begin End // If (piDbType(Self) = 2) Begin Send DoComboUpdate End // If (sOldValue <> sNewValue) Begin End_Procedure // OnCloseUp Procedure OnDropDown Handle ho Integer iItems If (piDbType(Self) = 1) Procedure_Return Get Combo_Item_Count To iItems Indicate Err False If (iItems < 2) Begin // Item 0 is " " Send DoComboFillList End // If (iItems < 2) Begin If Not (Err) Forward Send OnDropDown End_Procedure // OnDropDown Procedure DoOpenTable Handle hoDD String sTable Integer iFile iField iItem iItems iRetval iFromFile iToFile iOpen Get phoDD To hoDD Get Data_File Item 0 To iFile Get Data_Field Item 0 To iField Get File_Field_Current_Value Of hoDD iFile iField To sTable Move (Trim(sTable)) To sTable If (Length(sTable) = 0 Or sTable Contains (psNone(Self))) Begin If (pbFrom(Self)) Move 10 To iFile Else Move 20 To iFile Get_Attribute DF_FILE_OPENED Of iFile To iOpen If iOpen Close iFile If (piDbType(Self) = 6) Begin If (pbFrom(Self)) Get_Attribute DF_FILE_OPENED Of giFromDDF To iOpen Else Get_Attribute DF_FILE_OPENED Of giToDDF To iOpen If iOpen Begin // DFBTR_CLEAR_OWNER iFile Close iFile End // If iOpen Begin End // If (piDbType(Self) = 6) Begin Procedure_Return // Nothing to do yet... End // If (Length(sTable) = 0 Or sTable Contains "") Begin Get RDSOpenAsFile hoDD (pbFrom(Self)) False To iRetval End_Procedure // DoOpenTable Procedure Combo_Fill_List // Send Combo_Delete_Data End_Procedure // ComboFillList Procedure DoComboFillList Integer iType iFile iField iRetval iSize iNewSize iItem iDSNType iCount iItems Handle hoDD hoPathObject String sTable sPath sDriver sServer sUser sPassword sSchema sDataBase sValue Boolean bChanged bRecord Move (Low(GuiSize(Self))) To iSize Get phoDD To hoDD Get Current_Record Of hoDD To bRecord If (pbFrom(Self)) Get DDObjectId hoDD SncTable.File_Number "FromFilePath" To hoPathObject // Global function in Sysfuncs.pkg Else Get DDObjectId hoDD SncTable.File_Number "ToFilePath" To hoPathObject If Not hoPathObject Begin Send Stop_Box ("DDObjectId function could not find an associated hoPathObject for object:" * String(Self)) Procedure_Return End // If Not hoPathObject Begin Get Data_File Of hoPathObject Item 0 To iFile Get Data_Field Of hoPathObject Item 0 To iField Get File_Field_Current_Value Of hoDD iFile iField To sPath Get Data_File Item 0 To iFile Get Data_Field Item 0 To iField Get File_Field_Current_Value Of hoDD iFile iField To sTable Get File_Field_Changed_State Of hoDD iFile iField To bChanged Move (Trim(sPath)) To sPath Move (Trim(sTable)) To sTable If (sTable <> psNone(Self)) ; Get UpperFirstChar sTable To sTable If (pbFrom(Self)) Begin Get Field_Current_Value Of hoDD Field SncTable.FromDbType To iType Get Field_Current_Value Of hoDD Field SncTable.FromDriver To sDriver Get Field_Current_Value Of hoDD Field SncTable.FromServer To sServer Get Field_Current_Value Of hoDD Field SncTable.FromUser To sUser Get Field_Current_Value Of hoDD Field SncTable.FromPv To sPassword Get Field_Current_Value Of hoDD Field SncTable.FromOwner To sSchema Get Field_Current_Value Of hoDD Field SncTable.FromDatabase To sDatabase Get Field_Current_Value Of hoDD Field SncTable.FromDSNType To iDSNType End // If (pbFrom(Self)) Begin Else Begin Get Field_Current_Value Of hoDD Field SncTable.ToDbType To iType Get Field_Current_Value Of hoDD Field SncTable.ToDriver To sDriver Get Field_Current_Value Of hoDD Field SncTable.ToServer To sServer Get Field_Current_Value Of hoDD Field SncTable.ToUser To sUser Get Field_Current_Value Of hoDD Field SncTable.ToPv To sPassword Get Field_Current_Value Of hoDD Field SncTable.ToOwner To sSchema Get Field_Current_Value Of hoDD Field SncTable.ToDatabase To sDatabase Get Field_Current_Value Of hoDD Field SncTable.ToDSNType To iDSNType End // Else Begin Move (Trim(sDriver)) To sDriver Move (Trim(sServer)) To sServer Move (Trim(sUser)) To sUser Move (Trim(sPassword)) To sPassword Move (Trim(sDatabase)) To sDatabase If (iType = 6) Move sServer To sTable // For Pervasive.SQL Send Combo_Delete_Data Send Combo_Add_Item (psNone(Self)) If (Length(sDriver) = 0) Procedure_Return // Nothing to do yet... If (iType > 1 And iType < 6 And (Length(sServer) = 0)) Procedure_Return // Nothing to do yet... If (iType = 3 And (Length(sDatabase) = 0 Or sDatabase Contains (psNone(Self)))) Procedure_Return // Nothing to do yet... If ((iType = 1 Or iType = 6) And Length(sPath) > 0) Begin // DataFlex or Pervasive Get vFolderExists sPath To iRetval If Not iRetval Begin Send Stop_Box "The specified Path does not exist." Procedure_Return End // If Not iRetval Begin If (sTable <> psNone(Self)) Begin Get vFolderExists (sPath + "\" + sTable) To iRetval //Showln "spath and stable = " (sPath + "\" + sTable) " hoDD = " hoDD If Not iRetval Begin If (iType = 1) Send Stop_Box "The specified Table Name does not exist." If (iType = 6) Send Stop_Box "The specified Meta Data File does not exist." Procedure_Return End // If Not iRetval Begin End // If (sTable <> psNone(Self)) Begin End // If ((iType = 1 Or iType = 6) And Length(sPath) > 0) Begin If (iType > 1 And iType < 6 And Active_State(Self)) Send StartWorkingMessage "Connecting to the Database Server..." Case Begin Case (iType = 1) // DataFlex Get Combo_Add_DataFlex iSize sTable To iNewSize Case Break Case (iType = 2) // IBM DB2 Get Combo_Add_IBMDB2 iSize sServer sDriver sUser sPassword sSchema To iNewSize Case Break Case (iType = 3) // MS SQL Get Combo_Add_MSSQL iSize sServer sDriver sUser sPassword sSchema sDataBase To iNewSize Case Break Case (iType = 4) // ODBC Get Combo_Add_ODBC iSize sServer sDriver sUser sPassword iDSNType sPath To iNewSize Case Break Case (iType = 5) // ORACLE Get Combo_Add_Oracle iSize sServer sDriver To iNewSize Case Break Case (iType = 6) // PERVASIVE.SQL Get Combo_Add_Pervasive iSize sDriver sPath sTable To iNewSize Case Break Case Else Send StopWorkingMessage Procedure_Return Case End If (Low(iNewSize) > iSize) Set ListWidth To (Low(iNewSize) + 20) Else Set ListWidth To iSize Send DoSetListWidth Get Combo_Item_Matching sTable To iItem If (iItem < 0) Move 0 To iItem If (Current_Record(phoDD(Self))) ; Set WinCombo_Current_Item To iItem // If we are creating a new record: If Not bRecord Begin If (iType = 6) Move (psNone(Self)) To sTable If (pbFrom(Self)) Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.FromFile To 10 Else Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.ToFile To 20 If (pbFrom(Self)) Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.FromDataTable To sTable Else Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.ToDataTable To sTable End // If Not bRecord Begin Send StopWorkingMessage End_Procedure // DoComboFillList Function Combo_Add_DataFlex Integer iSize String sTable Returns Integer Integer iTmpSize If (sTable Contains psNone(Self)) Procedure_Return Get UpperFirstChar sTable To sTable Send Combo_Add_Item sTable Get Text_Extent sTable To iTmpSize If (iTmpSize > iSize) Move iTmpSize To iSize Function_Return iSize End_Function // Combo_Add_DataFlex Function Combo_Add_IBMDB2 Integer iSize String sServer String sDriver String sUser String sPassword String sOwner Returns Integer Handle ho Integer iTmpSize iNumItems iCount iPos String sConnect sTable sSchema sTableType sTableComment sText Move (Trim(sServer)) To sServer If (sServer Contains (psNone(Self)) Or sServer = "") Procedure_Return If (Active_State(Self)) Send StartWorkingMessage ("Connecting to the" * String(sServer) * "Database Server...") // Indicate Err False // Send Ignore_Error Of Error_Info_Object 12293 // "Login failed" // Login sServer sUser sPassword sDriver // If (Err) Begin // Send StopWorkingMessage // Send Trap_Error Of Error_Info_Object 12293 // "Login failed" // Send Info_Box ("The login to the" * sText * "database server failed, either the combination of the user name/password/schema name is wrong or the database server has not been started. Please adjust and try again.") // Procedure_Return // End // If (Err) Begin Get Private.phoArray To ho Send Delete_Data Of ho Set Array_Value Of ho Item (Item_Count(ho)) To (psNone(Self)) Set psDriver Of ghoBrowseConnect To sDriver Move (Pos("(", sServer)) To iPos If iPos Move (Left(sServer, (iPos - 1))) To sServer Move ("DSN=" + sServer + ";UID=" + sUser + ";PWD=" + sPassword + ";") To sConnect Indicate Err False Send Ignore_Error Of Error_Info_Object 28691 // "Cannot intialize user counting system" Send Ignore_Error Of Error_Info_Object 12293 // "Login failed" CLIEnumerateTables sDriver sConnect To iNumItems If Not (Err) Begin For iCount From 1 To iNumItems CLISchemaname sDriver iCount To sSchema CLITablename sDriver iCount To sTable CLITabletype sDriver iCount To sTableType CLITablecomment sDriver iCount To sTableComment If (Trim(sTable) <> "" And Uppercase(Trim(sTableType)) = "TABLE" And Uppercase(Trim(sTable)) <> "DFRECORDID") Begin // Get UpperFirstChar sTable To sTable // DON'T DO THIS. DB2 is case sensitive on table names! Send Combo_Add_Item sTable Get Text_Extent sTable To iTmpSize If (iTmpSize > iSize) Move iTmpSize To iSize // This could be used if all schema owner tables are displayed // in the combo, to auto set the schema name form when the // selected table changes in OnCloseUp: (I.e. remove the If-Begin statement above) Set Array_Value Of ho Item (Item_Count(ho)) To sSchema End // If (Trim(sTable) <> "" And Uppercase(Trim(sTableType)) = "TABLE" And Uppercase(Trim(sTable)) <> "DFRECORDID") Begin Loop // For iCount From 1 To iNumItems End // If Not (Err) Begin Send StopWorkingMessage Send Trap_Error Of Error_Info_Object 12293 // "Login failed" Send Trap_Error Of Error_Info_Object 28691 // "Cannot intialize user counting system" If (pbFrom(Self)) Move "Source" To sText Else Move "Destination" To sText If (Err) Begin If (pbFrom(Self)) Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.FromFile To 0 Else Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.ToFile To 0 Send Info_Box ("The login to the" * sText * "database server failed, either the combination of the user name/password/schema name is wrong or the database server has not been started. Please adjust and try again.") End // If (Err) Begin Function_Return iSize End_Function // Combo_Add_IBMDB2 Function Combo_Add_MSSQL Integer iSize String sServer String sDriver String sUser String sPassword String sOwner String sDataBase Returns Integer Handle ho Integer iTmpSize iNumItems iCount iPos String sConnect sTable sSchema sTableType sTableComment sText Move (Trim(sServer)) To sServer If (sServer Contains (psNone(Self)) Or sServer = "") Procedure_Return If (Active_State(Self)) Send StartWorkingMessage ("Connecting to the" * String(sServer) * "Database Server...") Get Private.phoArray To ho Send Delete_Data Of ho Set Array_Value Of ho Item (Item_Count(ho)) To (psNone(Self)) Move (Pos("(", sServer)) To iPos If iPos Move (Left(sServer, (iPos - 1))) To sServer Move ("DRIVER={SQL Server};SERVER=" + sServer + ";UID=" + sUser + ";PWD=" + sPassword + ";DATABASE=" + sDatabase + ";") To sConnect Indicate Err False Send Ignore_Error Of Error_Info_Object 28691 // "Cannot intialize user counting system" Send Ignore_Error Of Error_Info_Object 12293 // "Login failed" Set psDriver Of ghoBrowseConnect To sDriver CLIEnumerateTables sDriver sConnect To iNumItems If Not (Err) Begin For iCount From 1 To iNumItems CLITablename sDriver iCount To sTable CLISchemaname sDriver iCount To sSchema CLITabletype sDriver iCount To sTableType CLITablecomment sDriver iCount To sTableComment If (Trim(sTable) <> "" And Uppercase(Trim(sTableType)) = "TABLE" And Uppercase(Trim(sTable)) <> "DFRECORDID") Begin Get UpperFirstChar sTable To sTable Send Combo_Add_Item sTable Get Text_Extent sTable To iTmpSize If (iTmpSize > iSize) Move iTmpSize To iSize // This could be used if all schema owner tables are displayed // in the combo, to auto set the schema name form when the // selected table changes in OnCloseUp: (I.e. remove the If-Begin statement above) Set Array_Value Of ho Item (Item_Count(ho)) To sSchema End // If (Trim(sTable) <> "") Begin Loop // For iCount From 1 To iNumItems End // If Not (Err) Begin Send StopWorkingMessage Send Trap_Error Of Error_Info_Object 12293 // "Login failed" Send Trap_Error Of Error_Info_Object 28691 // "Cannot intialize user counting system" If (pbFrom(Self)) Move "Source" To sText Else Move "Destination" To sText If (Err) Begin If (pbFrom(Self)) Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.FromFile To 0 Else Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.ToFile To 0 Send Info_Box ("The login to the" * sText * "database server failed, either the combination of the user name/password/schema name is wrong or the database server has not been started. Please adjust and try again.") End // If (Err) Begin Function_Return iSize End_Function // Combo_Add_MSSQL Function Combo_Add_ODBC Integer iSize String sServer String sDriver String sUser String sPassword Integer iDSNType String sPath Returns Integer Handle ho String sConnect sTable sTableType sTableComment sSchema sSys sText Integer iTables iCount iNumItems Integer iTmpSize Move (Trim(sServer)) To sServer If (sServer Contains (psNone(Self)) Or sServer = "") Procedure_Return If (Active_State(Self)) Send StartWorkingMessage ("Connecting to the" * String(sServer) * "Database Server...") Get Private.phoArray To ho Send Delete_Data Of ho Indicate Err False Send Ignore_Error Of Error_Info_Object 28691 // "Cannot intialize user counting system" Send Ignore_Error Of Error_Info_Object 12293 // "Login failed" Set Array_Value Of ho Item (Item_Count(ho)) To (psNone(Self)) If (iDSNType = 2) Move ("FILEDSN=" + sPath - "\" - sServer) To sServer Else Move ("DSN=" + sServer) To sServer Move (sServer + ";UID=" + sUser + ";PWD=" + sPassword) To sConnect Set psDriver Of ghoBrowseConnect To sDriver CLIEnumerateTables sDriver sConnect To iNumItems If Not (Err) Begin For iCount From 1 To iNumItems CLITablename sDriver iCount To sTable CLISchemaname sDriver iCount To sSchema CLITabletype sDriver iCount To sTableType CLITablecomment sDriver iCount To sTableComment // To "View" or not to "View", that is the question: If (Trim(sTable) <> "" And Uppercase(Trim(sTableType)) = "TABLE" And Uppercase(Trim(sTable)) <> "DFRECORDID") Begin // If (Trim(sTable) <> "" And (Uppercase(Trim(sTableType)) = "VIEW" Or Uppercase(Trim(sTableType)) = "TABLE") And Uppercase(Trim(sTable)) <> "DFRECORDID") Begin // ************** TEMP ******************* // Get UpperFirstChar sTable To sTable // ************** TEMP ******************* Send Combo_Add_Item sTable Get Text_Extent sTable To iTmpSize If (iTmpSize > iSize) Move iTmpSize To iSize // This could be used if all schema owner tables are displayed // in the combo, to auto set the schema name form when the // selected table changes in OnCloseUp: (I.e. remove the If-Begin statement above) Set Array_Value Of ho Item (Item_Count(ho)) To sSchema End // If (Trim(sTable) <> "") Begin Loop // For iCount From 1 To iNumItems End // If Not (Err) Begin Send StopWorkingMessage Send Trap_Error Of Error_Info_Object 12293 Send Trap_Error Of Error_Info_Object 28691 // "Cannot intialize user counting system" If (Err) Begin If (pbFrom(Self)) Move "Source" To sText Else Move "Destination" To sText If (pbFrom(Self)) Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.FromFile To 0 Else Set Field_Changed_Value Of (phoDD(Self)) Field SncTable.ToFile To 0 Send Info_Box ("The login to the" * sText * "database server failed, either the combination of the user name/password/schema name is wrong or the database server has not been started. Please adjust and try again.") End // If (Err) Begin Function_Return iSize End_Function // Combo_Add_ODBC Function Combo_Add_Oracle Integer iSize String sServer String sDriver Returns Integer Integer iTmpSize // Send Combo_Add_Item sServer Get Text_Extent sServer To iTmpSize If (iTmpSize > iSize) Move iTmpSize To iSize Function_Return iSize End_Function // Combo_Add_Oracle Function Combo_Add_Pervasive Integer iSize String sDriver String sPath String sTable Returns Integer Integer iTmpSize iFile iOpen iRetval String sOrgPath If (Length(sPath) = 0 Or Length(sTable) = 0) Procedure_Return Get OpenDDFFile (pbFrom(Self)) sPath sDriver False To iFile // Global function in SyncFuncs.pkg If Not iFile Function_Return 0 Clear iFile Vfind iFile 0 Gt While (Found) Get_Field_Value iFile 2 To sTable Move (Trim(sTable)) To sTable If Not (sTable Contains "X$") Begin Get UpperFirstChar sTable To sTable Send Combo_Add_Item sTable End // If Not (sTable Contains "X$") Begin Get Text_Extent sTable To iTmpSize If (iTmpSize > iSize) Move iTmpSize To iSize Vfind iFile 0 Gt Loop Clear iFile Function_Return iSize End_Function // Combo_Add_Pervasive Register_Object oDeletePassword_dg // Delete password dialog. Procedure DoDeleteRecords Handle hoDD hoPassword Boolean bFrom Integer iFromFile iToFile iRetval iRecords iPasswordOk String sFile sText Move (oDeletePassword_dg(Self)) To hoPassword If hoPassword Begin Get IsDeletePasswordOk To iPasswordOk If (iPasswordOk <> 1) Begin If (iPasswordOk = 0) Send Info_Box "Sorry. The correct password was not entered. Cannot continue deleting records." Procedure_Return End // If (iPasswordOk <> 1) Begin End // If hoPassword Begin Get pbFrom To bFrom Get phoDD To hoDD If (pbFrom(Self)) Get Field_Current_Value Of hoDD Field SncTable.FromDataTable To sFile Else Get Field_Current_Value Of hoDD Field SncTable.ToDataTable To sFile Get Field_Current_Value Of hoDD Field SncTable.FromFile To iFromFile Get Field_Current_Value Of hoDD Field SncTable.ToFile To iToFile Move (Trim(sFile)) To sFile If (pbFrom(Self) And Not(iFromFile) Or Length(sFile) = 0) Procedure_Return Else If (Not(iToFile) Or Length(sFile) = 0) Procedure_Return If (pbFrom(Self)) Get_Attribute DF_FILE_RECORDS_USED Of iFromFile To iRecords Else Get_Attribute DF_FILE_RECORDS_USED Of iToFile To iRecords Move "\n\nNote: Make sure that the database table is _not_ opened by another application." To sText Get YesNo_Box ("Do you want to delete all" * String(iRecords) * "records for the data table" * String(sFile) + "?" + sText) To iRetval If (iRetval = MBR_No) Procedure_Return If (pbFrom(Self)) Get DeleteAllRecords iFromFile sFile To iRetval Else Get DeleteAllRecords iToFile sFile To iRetval If Not iRetval Broadcast Send DoUpdateData Of (Parent(Self)) iFromFile iToFile bFrom End_Procedure // DoDeleteRecords Function DeleteAllRecords Integer iFile String sFile Returns Integer Integer iRetval Boolean bIsOpen Get_Attribute DF_FILE_OPENED Of iFile To bIsOpen If Not bIsOpen Begin Send Stop_Box ("The database table" * sFile * "is not open. Cannot delete records.") Procedure_Return End // If Not bIsOpen Begin If (Active_State(Self)) Send StartWorkingMessage ("Deleting all records for database table" * String(sFile)) Indicate Err False Zerofile iFile Send StopWorkingMessage If (Err) Send Info_Box ("Records could not be deleted for the database table" * String(sFile)) Function_Return (Err) End_Function // DeleteAllRecords End_Class // cDbComboformDataTable