//**************************************************************************** // $Module type: CLASS // $Module name: cLoginButton // $Author : Nils G. Svedmyr // Created : 2002-08-15 @ 12:48 // // Description : // // $Rev History // 2002-08-15 Module header created //**************************************************************************** Use cBitmapButton.pkg Use SyncFuncs.pkg // Visual DataFlex 12.0 Migration Utility, added March 28, 2007: 15:13:24 #IF (!@ >= 120) { OverrideProperty=Bitmap InitialValue="Keys16.bmp" } { OverrideProperty=piTransparentColor InitialValue=clWhite } { OverrideProperty=Label InitialValue="&Login" } { OverrideProperty=Status_Help InitialValue="Click to login to the selected database server." } { OverrideProperty=Bitmap_Style InitialValue=Bitmap_Actual } { OverrideProperty=Bitmap_Style DesignTime=False } #ENDIF Class cLoginButton Is A cBitmapButton Procedure Construct_Object Forward Send Construct_Object 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 Handle phoDD (Main_DD(Self)) Property Handle phoViewButton 0 Set Status_Help To "Click to login to the selected database server/data source." End_Procedure // Construct_Object Procedure End_Construct_Object Forward Send End_Construct_Object End_Procedure // End_Construct_Object Procedure DoUpdateData Integer iFromFile Integer iToFile Boolean bFrom Handle hoDD Integer iFile iType String sServer Boolean bFromLocal Get pbFrom To bFromLocal Get piDbType To iType If (bFrom <> bFromLocal) Procedure_Return Get phoDD To hoDD If bFromLocal Get Field_Current_Value Of hoDD Field SncTable.FromServer To sServer Else Get Field_Current_Value Of hoDD Field SncTable.ToServer To sServer Move (Trim(sServer)) To sServer If (sServer Contains "") Move "" To sServer Set Enabled_State To (iType > 1 And Length(sServer) > 0) // If Not (pbFrom(Self)) showln "iType = " iType " " Self " sServer = " sServer " DoUpdateData" End_Procedure // DoUpdateData Procedure DoEnableLoginButton Set Enabled_State To True End_Procedure // DoEnableLoginButton Procedure DoEnableDisable Integer iType Handle hoDD String sServer Integer iFile iOpen Set piDbType To iType Get phoDD To hoDD If (pbFrom(Self)) Get Field_Current_Value Of hoDD Field SncTable.FromServer To sServer Else Get Field_Current_Value Of hoDD Field SncTable.ToServer To sServer Move (Trim(sServer)) To sServer If (sServer Contains "") Move "" To sServer Set Enabled_State To (iType > 1 And Length(sServer) > 0) // If Not (pbFrom(Self)) showln "iType = " iType " " Self " sServer = " sServer End_Procedure // DoEnableDisable Procedure OnClick Send DoServerConnect End_Procedure // OnClick Procedure DoServerConnect String sServer sUser sPassword sDriver sOwner sDataTable sPath Integer iFile iType iOk iDSNType Boolean bFrom bIsOpen Handle hoDD hoViewButton Get phoDD To hoDD Get phoViewButton To hoViewButton If (pbFrom(Self)) Begin Get Field_Current_Value Of hoDD Field SncTable.FromDbType To iType Get Field_Current_Value Of hoDD Field SncTable.FromFile To iFile Get Field_Current_Value Of hoDD Field SncTable.FromServer To sServer Get Field_Current_Value Of hoDD Field SncTable.FromOwner To sOwner Get Field_Current_Value Of hoDD Field SncTable.FromUser To sUser Get Field_Current_Value Of hoDD Field SncTable.FromDriver To sDriver Get Field_Current_Value Of hoDD Field SncTable.FromPV To sPassword Get Field_Current_Value Of hoDD Field SncTable.FromDataTable To sDataTable Get Field_Current_Value Of hoDD Field SncTable.FromFilePath To sPath 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.ToFile To iFile Get Field_Current_Value Of hoDD Field SncTable.ToServer To sServer Get Field_Current_Value Of hoDD Field SncTable.ToOwner To sOwner Get Field_Current_Value Of hoDD Field SncTable.ToUser To sUser Get Field_Current_Value Of hoDD Field SncTable.ToDriver To sDriver Get Field_Current_Value Of hoDD Field SncTable.ToPV To sPassword Get Field_Current_Value Of hoDD Field SncTable.ToDataTable To sDataTable Get Field_Current_Value Of hoDD Field SncTable.ToFilePath To sPath Get Field_Current_Value Of hoDD Field SncTable.ToDSNType To iDSNType End // Else Begin // This should not be possible to happen, but just in case: If (iType < 1) Begin If hoViewButton Set Enabled_State Of hoViewButton To False Send Info_Box "Program error. The login button should have been disabled. There's no need to login." Procedure_Return End // If (iType < 1) Begin Move (Trim(sServer)) To sServer Move (Trim(sOwner)) To sOwner Move (Trim(sUser)) To sUser Move (Trim(sDriver)) To sDriver Move (Trim(sPassword)) To sPassword Move (Trim(sDataTable)) To sDataTable Move (Trim(sPath)) To sPath If (sServer contains "") Move "" To sServer If (sDataTable contains "") Move "" To sDataTable If (Length(sServer) = 0) Begin Send Info_Box "No database server/data source has been selected. Please select one and try again." Procedure_Return End // If (Length(sServer) = 0) Begin If (Length(sDriver) = 0) Begin Send Stop_Box "Database Driver name is invalid" Procedure_Return End // If (Length(sDriver) = 0) Begin If (Active_State(Self)) Send StartWorkingMessage ("Connecting to" * String(sServer) + "...") Indicate Err False // Will be set by the Login command. Send Ignore_Error Of Error_Info_Object 75 // 'Can't open data file' Send Ignore_Error Of Error_Info_Object 12293 // 'Data source name not found' Send Ignore_Error Of Error_Info_Object 12295 // 'Table not in connection' Case Begin Case (iType = 1) // DataFlex Send StopWorkingMessage Procedure_Return Case Break Case (iType = 2) // IBM DB2 // Logout sDriver sServer If iFile Get_Attribute DF_FILE_OPENED Of iFile To bIsOpen If (bIsOpen And sOwner <> "") Set_Attribute DF_FILE_OWNER Of iFile To sOwner Login sServer sUser sPassword sDriver Case Break Case (iType = 3) // MS SQL // Logout sDriver sServer // **** THIS 'IGNORE ERROR' DOESN'T WORK: **** Send Ignore_Error Of Error_Info_Object 12289 // 'Database level error'. To avoid MS SQL Error box. If iFile Get_Attribute DF_FILE_OPENED Of iFile To bIsOpen If (bIsOpen And sOwner <> "") Set_Attribute DF_FILE_OWNER Of iFile To sOwner Login sServer sUser sPassword sDriver Send Trap_Error Of Error_Info_Object 12289 Case Break Case (iType = 4) // ODBC // Logout sDriver sServer If iFile Get_Attribute DF_FILE_OPENED Of iFile To bIsOpen If (bIsOpen And sOwner <> "") Set_Attribute DF_FILE_OWNER Of iFile To sOwner If (iDSNType = 2) Move (sPath - "\" - sServer) To sServer // Showln sServer " " sUser " " sPassword " " sDriver Login sServer sUser sPassword sDriver Case Break Case (iType = 5) // Oracle // Logout sDriver sServer If iFile Get_Attribute DF_FILE_OPENED Of iFile To bIsOpen If (bIsOpen And sOwner <> "") Set_Attribute DF_FILE_OWNER Of iFile To sOwner Login sServer sUser sPassword sDriver Case Break Case (iType = 6) // Pervasive If (Length(sPassword) > 0) Begin DFBTR_REMOVE_ALL_OWNERS DFBTR_ADD_OWNER sPassword End // If (Length(sPassword) > 0) Begin Case Break Case Else Send StopWorkingMessage Procedure_Return Case End Send StopWorkingMessage If Not (Err) Begin Move 1 To iOk If (Length(sDataTable) > 0) Begin Get_Attribute DF_FILE_OPENED Of iFile To bIsOpen If Not bIsOpen Begin Get RDSOpenAsFile hoDD (pbFrom(Self)) True To bIsOpen If Not bIsOpen Move -1 To iOk Else Move 1 To iOk End // If Not bIsOpen Begin End // If (Length(sDataTable) > 0) Begin End // If Not (Err) Begin If (iOk < 1) Begin If hoViewButton Set Enabled_State Of hoViewButton To False If (iOk = 0) Send Info_Box "Login unsuccessful. Please correct login details and try again." If (iOk = -1) Send Info_Box "Login successful but for an unkown reason the data table could not be re-opened." End // If Not iOk Begin Else If (iOk = 1) Begin If hoViewButton Set Enabled_State Of hoViewButton To True Send Info_Box "Login successful." End // Else If (iOk = 1) Begin Send Trap_Error Of Error_Info_Object 75 Send Trap_Error Of Error_Info_Object 12293 Send Trap_Error Of Error_Info_Object 12295 End_Procedure // DoServerConnect // Procedure Set pbToolTips Boolean bState // Handle ho // If (bState = False) Begin // Get phoToolBar To ho // Set pbToolTips Of ho To False // End // If (bState = False) Begin // End_Procedure // Set pbToolTips End_Class // cLoginButton