' Declare global variables that will contain field names, database connection and dialog translations Global MSLSetupData(1 to 20) as String Global MSLSetupDialog(1 to 20) as String Function SetupMultiSearchLookupVars(Searchstr as string) dim tempsearchstr as String ' TODO : Setup all your Custom database setting here MSLSetupData(1) = "DSN=verseon;UID=verseon;PWD=verseon;" ' Connect string ' msgbox "KfxButgethouder a : " & KfxButgethouder if Searchstr = "" then tempsearchstr = UCase(KfxButgethouder) else tempsearchstr = UCase(Searchstr) end if REM the PHRASE column should contain a value from KEY, otherwise I predict a loop MSLSetupData(6) = "SELECT distinct BUDGETHOUDERID, KEY FROM V_KOFAX_BUDGETHOUDER" ' use Searchstr as the string entered on the dialog MSLSetupData(7) = "WHERE (upper(PHRASE) LIKE '%" & tempsearchstr & "%') OR (BUDGETHOUDERID = '" & tempsearchstr & "') " MSLSetupData(8) = "ORDER BY 2" ' msgbox "MSLSetupData(7): " & MSLSetupData(7) ' TODO : Dialog Translations, does not effect errormessages as they are generated by ODBC MSLSetupDialog(1) = "Het is niet mogelijk een vebinding te maken met de Oracle server, neem contact op met systeembeheer." MSLSetupDialog(2) = "ODBC verbindings fout" ' Error message caption MSLSetupDialog(3) = "Butgethouder zoeken" ' Editor messages cation ' Search dialog MSLSetupDialog(9) = "Geen gegevens gevonden voor : " MSLSetupDialog(10) = "&Butgethouder Zoeken" MSLSetupDialog(11) = "&Zoeken" MSLSetupDialog(12) = "&Selecteren" MSLSetupDialog(13) = "&Annuleren" end function ' **------------------------- ' **-- Below there be dragons ' **------------------------- Global MSLhdbc as long Global MSLhstmt as long Global MSLSQL as string Global MSLerrors(1 to 3, 1 to 10) as Variant Global MSLDialogResult As Integer Global MSLSelection as String ' Hookfunction to connect to the Search lookup table Function BMMultiSearchLookupLoadValidationHook() as Long Call SetupMultiSearchLookupVars("") MSLhdbc=SqlOpen(MSLSetupData(1),prompt:=2) if MSLhdbc <= 0 then SQLError destination:=MSLerrors 'NOTE : do not show MSLSetupData(1) as it may contain a password MsgBox Str(MSLerrors(1,3)) & " #" & Str(MSLerrors(1,1)), 48, MSLSetupDialog(2) & " #001" end if BMMultiSearchLookupLoadValidationHook=MSLhdbc end function Function BMMultiSearchLookupUnloadValidationHook() as Long BMMultiSearchLookupUnloadValidationHook=SqlClose(MSLhdbc) MSLhdbc = -1 end function ' call thif function to get 1 item Function BMMSLGetDataFromSQL(Searchstr as string) as string Dim MultiSearchdata(1 To 10, 1 To 50) As Variant Dim SearchString as string dim retcode as long dim counter as integer dim innercounter as integer dim SQL as string dim tfieldlength as integer dim maxreturn as integer maxreturn = 2 ' update search strings Call SetupMultiSearchLookupVars(Searchstr$) SQL = MSLSetupData(6) & " " & MSLSetupData(7) & " " & MSLSetupData(8) MSLhstmt=SqlExecQuery(MSLhdbc, SQL) if MSLhstmt< 0 then '$CStrings SQLError destination:=MSLerrors MsgBox SQL & "\n\n" & Str(MSLerrors(1,3)) & " #" & Str(MSLerrors(1,1)), 48, MSLSetupDialog(2) & " #005" '$CStrings end if if MSLhstmt > 0 then ' TODO : if you want more fields shown, change the third argument (Change the dimention of MultiSearchdata too) retcode = SQLRetrieve(MSLhdbc, MultiSearchdata, 10,maxreturn, 0 ) if retcode <= 0 then '$CStrings SQLError destination:=MSLerrors if MSLerrors(1,1) <> 0 then ' retcode returns an error when there is no data, only special errors are shown MsgBox SQL &"\n\n" & Str(MSLerrors(1,3)) & " #" & Str(MSLerrors(1,1)), 48, MSLSetupDialog(2) & " #006" end if retcode = 0 '$CStrings end if else retcode = 0 end if if retcode > 0 then ' did we find anything SearchString = MultiSearchdata(1,1) else 'we did not find anything, inform user Redim SearchListContent(0) MsgBox MSLSetupDialog(9) & Searchstr$,64, MSLSetupData(3) & " #007" end if BMMSLGetDataFromSQL = SearchString end Function