Hi
Deine Anfrage ist einfach zu umfangreich. Vor wenigen Wochen erst habe ich ein universelles Recherchetool - allerdings in PoweBASIC entwickelt. Es benötigt als Eingangsparameter nur die Datenbank.
Vielleicht kannst Du "erben" da ja vieles in VB übernommen werden kann.
%IDD_DIALOG1 = 101
%IDC_Tabelleframe = 1001
%IDC_Tabellen = 1002
%IDC_Felder = 1003
%IDC_AusFeldFragem = 1004
%IDC_AuswFeld = 1009
%IDC_AUSWAHLLIST = 1010
%IDC_Zuweisungframe = 1011
%IDC_Re_TEXTBOX1 = 1013
%IDC_Re_LABEL1 = 1016
%IDC_ASPEKT = 1016
%IDC_Re_LABEL2 = 1017
%IDC_SUCHBEGRIFF = 1017
%IDC_Re_LABEL3 = 1018
%IDC_Re_BUTTON1 = 1026
%IDC_SQLListe = 1040
%IDC_HINZUFGEN = 1019
%IDC_BUTTON2 = 1020
%IDC_ODER = 1020
%IDC_Loeschen = 1021
%IDC_Starten = 1022
%IDC_AddSuchString = 1045
%IDC_Re_LABEL4 = 1023
%IDC_Re_TEXTBOX2 = 1024
%IDC_Re_DeckFrame = 1025
%IDC_cdBedingung =1050
'Enum GridMessages
%Grid_AfterAddnew = &H1
%Grid_BeforeAddnew = &H2
%Grid_BeforeDelete = &H3
%Grid_BeforeUpdate = &H4
%Grid_CancelAddNew = &H5
%Grid_CellClick = 6
%Grid_CellDblClick = &H7
%Grid_ColumnClick = &H8
%Grid_ColumnResized = &H9
%Grid_EditKeyDown = &Ha
%Grid_EditKeyPress = &Hb
%Grid_EditKeyUp = &Hc
%Grid_FillComboBox = &Hd
%Grid_GotFocus = &He
%Grid_LostFocus = &Hf
%Grid_RowChange = &H10
%Grid_RowLoaded = &H11
%Grid_StartAddNew = &H12
%Grid_StartEditMode = &H13
DECLARE CALLBACK FUNCTION RechercheDlgProc()
GLOBAL GridEvents AS DWORD
FUNCTION ShowRechercheDlg(BYVAL hParent AS DWORD) AS LONG
STATIC Anzahl AS LONG
LOCAL hWndDatagrid AS DWORD
LOCAL lRslt AS LONG
LOCAL hDlg AS DWORD
LOCAL hCtl AS DWORD
LOCAL vGridhWnd AS VARIANT
LOCAL vhParent AS VARIANT
LOCAL vGridEvent AS VARIANT
LOCAL vName AS VARIANT
LOCAL vi AS VARIANT
LOCAL i AS INTEGER
LOCAL n AS INTEGER
LOCAL s AS STRING
LOCAL datagrid AS DISPATCH
DIM cbBed(0 TO 10) AS STRING
cbBed(0)="ist gleich"
cbBed(1)="ist ungleich"
cbBed(2)="ist leer"
cbBed(3)="ist nicht leer"
cbBed(4)="enthält"
cbBed(5)="enhält nicht"
cbBed(6)="beginnt mit"
cbBed(7)="endet mit"
cbBed(8)="zwischen"
cbBed(9)="ist größer als"
cbBed(10)="ist kleiner als"
INCR Anzahl
REDIM PRESERVE RechercheGridhWnd(Anzahl)
REDIM PRESERVE RechercheWinhWnd(Anzahl)
DIALOG NEW hParent, "SPUDOK <Recherche>", 41, 138, 445, 268, %WS_POPUP OR _
%WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION OR %WS_SYSMENU OR _
%WS_MINIMIZEBOX OR %WS_MAXIMIZEBOX OR %WS_CLIPSIBLINGS OR %WS_VISIBLE _
OR %DS_MODALFRAME OR %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT, _
%WS_EX_WINDOWEDGE OR %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR _
%WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hDlg
SET datagrid = NEW DISPATCH IN "Datagrid.Grid"
OBJECT GET datagrid.hWnd TO vGridhWnd
hWndDatagrid = VARIANT#(vGridhWnd)
SetWindowLong hWndDatagrid,%GWL_Style,%WS_Child OR %WS_Visible
RechercheGridhWnd(Anzahl).hWnd=hWndDatagrid
SET RechercheGridhWnd(Anzahl).Grid = datagrid
RechercheWinhWnd(Anzahl)=hDlg
CONTROL ADD FRAME, hDlg, %IDC_Tabelleframe, "Tabellen und Felder", 8, 2, _
106, 120
CONTROL ADD COMBOBOX, hDlg, %IDC_Tabellen,, 12, 12, 98, 80, %WS_CHILD OR _
%WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %CBS_DROPDOWN OR _
%CBS_SORT, %WS_EX_LEFT OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
CONTROL ADD LISTBOX, hDlg, %IDC_Felder, , 12, 26, 98, 100
CONTROL ADD FRAME, hDlg, %IDC_AusFeldFragem, "Ausgewählte Felder", 118, 2, _
96, 120
CONTROL ADD TEXTBOX, hDlg, %IDC_AuswFeld, "", 122, 12, 88, 13
CONTROL ADD LISTBOX, hDlg, %IDC_AUSWAHLLIST, , 122, 26, 88, 90,%WS_CHILD OR _
%WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %LBS_STANDARD OR _
%LBS_NOTIFY OR %LBS_NOINTEGRALHEIGHT, %WS_EX_CLIENTEDGE OR %WS_EX_LEFT _
OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
CONTROL ADD FRAME, hDlg, %IDC_Zuweisungframe, "Feld zuweisen mit Begriff", _
218, 2, 220, 120
CONTROL ADD COMBOBOX, hDlg, %IDC_SQLListe, , 222, 72, 212, 120,%WS_CHILD OR _
%WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %WS_HScroll OR _
%CBS_DROPDOWN OR _
%WS_EX_LEFT OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
CONTROL ADD COMBOBOX, hDlg, %IDC_SUCHBEGRIFF, , 222, 46, 212, 120,%WS_CHILD _
OR _
%WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %WS_HScroll OR _
%CBS_DROPDOWN OR _
%WS_EX_LEFT OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
CONTROL ADD COMBOBOX, hDlg, %IDC_cdBedingung,cbBed() , 222, 22, 94, _
80,%WS_CHILD OR _
%WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %CBS_DROPDOWN OR _
%CBS_SORT, %WS_EX_LEFT OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
CONTROL ADD LABEL, hDlg, %IDC_ASPEKT, "Bedingung", 222, 12, 70, 10
CONTROL ADD LABEL, hDlg, %IDC_SUCHBEGRIFF, "Suchbegriff", 222, 36, 90, 10
CONTROL ADD LABEL, hDlg, %IDC_Re_LABEL3, "Liste Abfragen", 222, 62, 96, 10
CONTROL ADD BUTTON, hDlg, %IDC_HINZUFGEN, "Und", 222, 88, 48, 14
CONTROL ADD BUTTON, hDlg, %IDC_ODER, "Oder", 222, 104, 48, 14
CONTROL ADD BUTTON, hDlg, %IDC_Loeschen, "Löschen", 282, 104, 70, 14
CONTROL ADD BUTTON, hDlg, %IDC_Starten, "Starten", 362, 96, 70, 14
CONTROL ADD BUTTON, hDlg, %IDC_AddSuchString,"Speichern",282,88,70,14
CONTROL ADD LABEL, hDlg, %IDC_Re_LABEL4, "Suchergebnis", 322, 12, 74, 18
CONTROL ADD TEXTBOX, hDlg, %IDC_Re_TEXTBOX2, "", 322, 22, 110, 14
SetParent hWndDatagrid,hDlg
vhParent=hDlg
OBJECT LET DataGrid.hWndParent=vhParent
OBJECT GET DataGrid.WinMessage TO vGridEvent
RechercheGridhWnd(Anzahl).Message = VARIANT#(vGridEvent)
OBJECT GET ZentralDB.TableDefs.Count TO vi
n = VARIANT#(vi)
FOR i=1 TO n
vi=i
vname=0
OBJECT GET ZentralDB.TableDefs(vi).NAME TO vName
s=VARIANT$(vName)
IF INSTR(s,"Sys") = 0 AND UCASE$(s)<> "USER" THEN
COMBOBOX ADD hdlg,%IDC_Tabellen,VARIANT$(vName)
END IF
NEXT
CONTROL DISABLE hDlg,%IDC_Re_TEXTBOX2
DIALOG SHOW MODELESS hDlg, CALL RechercheDlgProc() TO lRslt
CONTROL HANDLE hdlg,%IDC_SUCHBEGRIFF TO hCtl
Sendmessage hctl,%CB_SETHORIZONTALEXTENT,4000,0
SendMessage hDlg,%WM_SIze,0,0
FUNCTION = lRslt
END FUNCTION
'------------------------------------------------------------------------------
' --
CALLBACK FUNCTION RechercheDlgProc()
STATIC sSuchString AS STRING
STATIC sOriginalString AS STRING
STATIC sWhere AS STRING
LOCAL sSuch AS STRING
LOCAL r AS Rect
LOCAL vName AS VARIANT
LOCAL vSuch AS VARIANT
LOCAL ss AS STRING
LOCAL sVon AS STRING
LOCAL sBis AS STRING
LOCAL vVDat AS VARIANT
LOCAL vBDat AS VARIANT
LOCAL vTab AS VARIANT
LOCAL vRow AS VARIANT
LOCAL vCol AS VARIANT
LOCAL vTrue AS VARIANT
LOCAL sTab AS STRING
LOCAL sFeld AS STRING
LOCAL vi AS VARIANT
LOCAL datagrid AS DISPATCH
LOCAL i AS LONG
LOCAL n AS LONG
LOCAL s AS STRING
LOCAL vRs AS VARIANT
LOCAL vSQL AS VARIANT
LOCAL sSucheList AS ASCIIZ * 50
LOCAL sInsString AS ASCIIZ * 2048
ARRAY SCAN RechercheWinhWnd(), = CBHNDL, TO n
SET Datagrid=RechercheGridhWnd(n-1).Grid
IF sWhere = "" THEN
CONTROL DISABLE CBHNDL,%IDC_Loeschen
ELSE
CONTROL ENABLE CBHNDL,%IDC_Loeschen
END IF
SELECT CASE CBMSG
CASE RechercheGridhwnd(n-1).Message
SELECT CASE CBLPARAM
CASE %Grid_CellDblClick
CONTROL SET TEXT CBHNDL,%IDC_Re_TEXTBOX2,""
vname = 0
OBJECT GET DataGrid.CellDblClick_nCol TO vTab
OBJECT GET DataGrid.ColumnCaption(vTab) TO vName
s = INPUTBOX$("Bitte geben Sie den zu suchenden Text oder" & _
"Wert für die Spalte <" + VARIANT$(vName) + _
"> ein.", "Modus: Suchen in" & _
"Rechercheergebnis aktiviert" & _
"...",sOriginalString)
IF LEN(s)=0 THEN EXIT FUNCTION
sOriginalString=s
REPLACE "." WITH "?" IN s
REPLACE "'" WITH "?" IN S
REPLACE "(" WITH "?" IN S
REPLACE ")" WITH "?" IN s
REPLACE "[" WITH "?" IN s
REPLACE "]" WITH "?" IN s
REPLACE "{" WITH "?" IN s
REPLACE "}" WITH "?" IN s
REPLACE ":" WITH "?" IN s
vTrue=%True
IF INSTR(s,"?")> 0 OR INSTR(s,"*") > 0 THEN
sFeld=" Like '*" + s + "*'"
ELSE
sFeld=" = '" + s + "'"
END IF
IF UCASE$(s)=UCASE$(sSuchString) THEN
'FindNext
vSQL=0
vSQL=VARIANT$(vName) + sFeld
OBJECT CALL DataGrid.FindNext(vSQL,vTrue) TO vSuch
IF VARIANT#(vSuch) = 65535 THEN
CONTROL SET TEXT CBHNDL,%IDC_Re_TEXTBOX2,"kein" & _
"Datensatz"
END IF
ELSE
'FindFirst
vSQL=0
vSQL=VARIANT$(vName) + sFeld
OBJECT CALL DataGrid.FindFirst(vSQL,vTrue) TO vSuch
IF VARIANT#(vSuch) = 65535 THEN
CONTROL SET TEXT CBHNDL,%IDC_Re_TEXTBOX2,"kein" & _
"Datensatz"
END IF
END IF
sSuchString=s
CASE %Grid_ColumnClick
vName=0
OBJECT GET Datagrid.ColumnClick_Caption TO vName
OBJECT CALL Datagrid.Sort(vName)
END SELECT
CASE %WM_Size
IF CBWPARAM <> %SIZE_Minimized THEN
ARRAY SCAN RechercheWinhWnd(), = CBHNDL, TO n
GetClientRect CBHNDL,r
ShowWindow CBHNDL,%SW_Hide
MoveWindow RecherchegridhWnd( _
n-1).hwnd,11,220,r.nRight-22,r.nBottom-230,%True
OBJECT CALL Datagrid.DoResize
ShowWindow CBHNDL,%SW_Show
END IF
CASE %WM_DESTROY
ARRAY SCAN RechercheWinhWnd(), = CBHNDL, TO n
RechercheGridhWnd(n-1).hWnd=0
CASE %WM_Command
SELECT CASE CBCTL
CASE %IDC_Tabellen
IF CBCTLMSG = %CBN_SELENDOK THEN
COMBOBOX GET TEXT CBHNDL,CBCTL TO sTab
vTab=0
vTab=sTab
OBJECT GET ZentralDB.TableDefs(vTab).Fields.Count TO vi
n = VARIANT#(vi)
LISTBOX RESET CBHNDL,%IDC_Felder
LISTBOX RESET CBHNDL,%IDC_Auswahllist
COMBOBOX RESET CBHNDL,%IDC_SQLListe
FOR i=1 TO n
vi=i
vName=0
OBJECT GET Zentraldb.Tabledefs(vTab).Fields(vi).NAME _
TO vName
s=VARIANT$(vName)
IF INSTR(s,"MySys")=0 THEN
LISTBOX ADD CBHNDL,%IDC_Felder,s
END IF
NEXT
END IF
CASE %IDC_Felder
IF CBCTLMSG = %LBN_SELCHANGE THEN
COMBOBOX GET TEXT CBHNDL,%IDC_Tabellen TO sTab
LISTBOX GET TEXT CBHNDL,CBCTL TO sFeld
CONTROL HANDLE CBHNDL,%IDC_Auswahllist TO i
IF sFeld="" OR LEN(sFeld)=0 THEN EXIT FUNCTION
sSucheList=sFeld
n = SendMessage(i,%LB_FindString,-1,VARPTR(sSucheList))
IF n<>%LB_Err THEN
MSGBOX "Dieses Feld wurde bereits" & _
"ausgewählt.",64,"Abbruch ..."
EXIT FUNCTION
END IF
LISTBOX ADD CBHNDL,%IDC_Auswahllist,sFeld
n = Sendmessage(i,%LB_GetCount,0,0)
IF n=0 THEN EXIT FUNCTION
FOR i=1 TO n
LISTBOX SELECT CBHNDL,%IDC_Auswahllist,i
s=""
IF i=1 THEN
LISTBOX GET TEXT CBHNDL,%IDC_Auswahllist TO s
sFeld=s
ELSE
LISTBOX GET TEXT CBHNDL,%IDC_Auswahllist TO s
sFeld = sFeld + ", " + s
END IF
NEXT
CONTROL HANDLE CBHNDL,%IDC_SQLListe TO i
vSQL="SELECT " + sFeld + " From " +sTab
OBJECT CALL ZentralDB.OpenRecordset(vSQL) TO vRS
OBJECT SET Datagrid.Recordset = vRs
OBJECT CALL Datagrid.Refresh
sInsString=VARIANT$(vSQL)
Sendmessage i,%CB_InsertString,0,VARPTR(sInsString)
SendMessage i,%CB_SETHORIZONTALEXTENT,4000,0
CONTROL SET TEXT CBHNDL,%IDC_SQLListe,sInsString
END IF
CASE %IDC_SQLListe
IF CBCTLMSG = %CBN_SELENDOK THEN
COMBOBOX GET TEXT CBHNDL,CBCTL TO s
vSQL=0
vSQL = s
OBJECT CALL Zentraldb.OpenRecordset(vSQL) TO vRs
OBJECT SET DataGrid.Recordset = vRs
OBJECT CALL Datagrid.Refresh
END IF
CASE %IDC_Auswahllist
IF CBCTLMSG = %LBN_SELCHANGE THEN
LISTBOX GET TEXT CBHNDL,CBCTL TO s
CONTROL SET TEXT CBHNDL,%IDC_AuswFeld,s
END IF
CASE %IDC_HINZUFGEN
IF CBCTLMSG = %BN_CLICKED THEN
IF sWhere = "" THEN
MSGBOX "Sie haben den linken Teil der" & _
"Verknüpfungsanfrage noch nicht" & _
"definiert.",64,"Abbruch ..."
EXIT FUNCTION
END IF
END IF
sWhere = sWhere + " AND "
COMBOBOX ADD CBHNDL,%IDC_SUCHBEGRIFF,"Und"
CONTROL DISABLE CBHNDL,%IDC_Starten
CASE %IDC_Loeschen
IF CBCTLMSG = %BN_Clicked THEN sWhere = ""
CONTROL ENABLE CBHNDL,%IDC_Starten
COMBOBOX RESET CBHNDL,%IDC_SUCHBEGRIFF
MSGBOX "Der gesamte Rechercheauftrag wurde" & _
"gelöscht.",64,"Löschen bestätigt ..."
CASE %IDC_Starten
IF CBCTLMSG = %BN_Clicked THEN
IF sWhere = "" THEN
MSGBOX "Sie haben keine Recherche" & _
"definiert.",64,"Abbruch ..."
EXIT FUNCTION
END IF
CONTROL SET TEXT CBHNDL,%IDC_Re_TEXTBOX2,""
CONTROL GET TEXT CBHNDL,%IDC_SQLListe TO sSuch
vSQL = 0
vSQL= sSuch + " " + sWhere
OBJECT CALL ZentralDB.OpenRecordset(vSQL) TO vRS
OBJECT SET Datagrid.Recordset = vRs
OBJECT CALL Datagrid.Refresh
vSQL=0
OBJECT GET DataGrid.Recordset.Recordcount TO vSQL
CONTROL SET TEXT CBHNDL,%IDC_Re_TEXTBOX2,STR$(VARIANT#( _
vSQL)) + " Datenstätze"
END IF
CASE %IDC_Oder
IF CBCTLMSG = %BN_Clicked THEN
IF sWhere = "" THEN
MSGBOX "Sie haben den linken Teil der" & _
"Verknüpfungsanfrage noch nicht" & _
"definiert.",64,"Abbruch ..."
EXIT FUNCTION
END IF
END IF
COMBOBOX ADD CBHNDL,%IDC_SUCHBEGRIFF,"oder"
sWhere = sWhere + " OR "
CONTROL DISABLE CBHNDL,%IDC_Starten
CASE %IDC_cdBedingung
IF CBCTLMSG = %CBN_SELENDOK THEN
COMBOBOX GET TEXT CBHNDL,CBCTL TO s
IF s="zwischen" THEN
MSGBOX "Beachten Sie, dass Sie im Suchbegriff zwei" & _
"Werte durch ein / getrennt angeben" & _
"müssen!",64,"Information"
EXIT FUNCTION
END IF
END IF
CASE %IDC_AddSuchString
IF CBCTLMSG =%BN_CLICKED THEN
CONTROL GET TEXT CBHNDL,%IDC_SQLListe TO s
IF s="" THEN
MSGBOX "Das Feld 'Liste Abfragen' ist leer. Bitte" & _
"stellen Sie eine Abfrage" & _
"ein.",%MB_Iconstop,"Fehler ..."
EXIT FUNCTION
END IF
CONTROL GET TEXT CBHNDL,%IDC_AuswFeld TO sFeld
IF sFeld="" THEN
MSGBOX "Der Suchbegriff kann nicht gespeichert" & _
"werden, da kein Feld ausgewählt" & _
"wurde.",64,"Aktion abgebrochen ..."
EXIT FUNCTION
END IF
CONTROL GET TEXT CBHNDL,%IDC_cdBedingung TO s
IF s="" THEN
MSGBOX "Der Suchbegriff kann nicht gespeichert" & _
"werden, da keine Bedingung ausgewählt" & _
"wurde.",64,"Aktion abgebrochen ..."
EXIT FUNCTION
END IF
CONTROL GET TEXT CBHNDL,%IDC_Suchbegriff TO sSuch
IF sSuch="" AND INSTR(s,"leer")=0 THEN
MSGBOX "Der Suchbegriff kann nicht gespeichert" & _
"werden, da kein Suchbegriff angegeben" & _
"wurde.",64,"Aktion abgebrochen ..."
EXIT FUNCTION
END IF
SELECT CASE s
CASE "ist gleich" : s=" = "
CASE "ist ungleich" : s=" <> "
CASE "ist leer" : s=" Is Null"
CASE "ist nicht leer" : s=" Not Is Null"
CASE "enthält" : s=" Like "
CASE "enhält nicht" : s=" Not Like "
CASE "beginnt mit" : s=" Like "
CASE "endet mit" : s=" Like "
CASE "zwischen"
IF INSTR(sSuch,"/") = 0 THEN
MSGBOX "Fehler. Wenn Sie eine Bereichssuche" & _
"vornehmen wollen, müssen Sie in" & _
"Suchbegriff " + _
"zwei Begriffe eingeben, die Sie" & _
"durch ein / voneinander trennen" & _
"müssen",%MB_Iconstop,"Fehler ..."
EXIT FUNCTION
END IF
CASE "ist größer als" : s=" > "
CASE "ist kleiner als" : s=" < "
CASE ELSE
MSGBOX "Die Bedingung enthält eine illegale" & _
"Anweisung.",%MB_Iconstop,"Fehler ..."
EXIT FUNCTION
END SELECT
vname=0
vname=sFeld
OBJECT GET DataGrid.Recordset.Fields(vName).TYPE TO vi
CONTROL GET TEXT CBHNDL,%IDC_cdBedingung TO ss
SELECT CASE ss
CASE "ist gleich"
SELECT CASE VARIANT#(vi)
CASE 8
vSQL=0
vTab=0
vSQL=sSuch
OBJECT CALL DataGrid.GetDatumString( _
vSQL) TO vTAb
sSuch = sFeld + s + VARIANT$(vTab)
CASE 10,12
sSuch = sFeld + s + "'" + sSuch + "'"
CASE ELSE
sSuch = sFeld + s + sSuch
END SELECT
CASE "ist ungleich"
SELECT CASE VARIANT#(vi)
CASE 8
vSQL=0
vTab=0
vSQL=sSuch
OBJECT CALL DataGrid.GetDatumString( _
vSQL) TO vTAb
sSuch = sFeld + s + VARIANT$(vTab)
CASE 10,12
sSuch = sFeld + s + "'" + sSuch + "'"
CASE ELSE
sSuch = sFeld + s + sSuch
END SELECT
CASE "ist leer"
sSuch = sFeld + s
CASE "ist nicht leer"
sSuch = sFeld + s
CASE "enthält"
SELECT CASE VARIANT#(vi)
CASE 8
CASE 10,12
sSuch = sFeld + s + "'*" + sSuch + "*'"
END SELECT
CASE "enhält nicht"
SELECT CASE VARIANT#(vi)
CASE 8
CASE 10,12
sSuch = sFeld + s + "'*" + sSuch + "*'"
END SELECT
CASE "beginnt mit"
SELECT CASE VARIANT#(vi)
CASE 8
CASE 10,12
sSuch = sFeld + s + "'" + sSuch + "*'"
END SELECT
CASE "endet mit"
SELECT CASE VARIANT#(vi)
CASE 8
CASE 10,12
sSuch = sFeld + s + "'*" + sSuch + "'"
END SELECT
CASE "zwischen"
vvDat=0
vbDat=0
sVon = TRIM$(LEFT$(sSuch,INSTR(sSuch,"/")-1))
sBis = TRIM$(MID$(sSuch,INSTR(sSuch,"/")+1))
vname=0
vName=sVon
OBJECT CALL DataGrid.IsDatum(vName) TO vvDat
vName = 0
vName = sBis
OBJECT CALL DataGrid.IsDatum(vName) TO vBDat
IF VARIANT#(vvDat) <> 0 AND VARIANT#(vBDat)<> 0 THEN
vSQL = 0
vvDat=0
vbDat=0
vi=0
vvDat=sVon
vbDat=sBis
vi=sFeld
OBJECT CALL DataGrid.GetBetweenSQL( _
vi,vvDat,vbDat) TO vSQL
sSuch = VARIANT$(vSQL)
ELSE
vvDat=VAL(sVon)
vbDat=VAL(sBis)
IF VARIANT#(vvDat)=0 AND VARIANT#(vbDat)= 0 _
THEN
MSGBOX "Die Bereichsabfrage kann nicht" & _
"durchgeführt werden.",64,"Fehler" & _
"aufgetreten ..."
EXIT FUNCTION
END IF
IF VARIANTVT(vvDat)> 6 OR VARIANTVT( _
vbDat)> 6 THEN
MSGBOX "Ein Bereich kann nur in Datum" & _
"oder Zahlen ermittel" & _
"werden.",64,"Abbruch ..."
EXIT FUNCTION
END IF
sSuch = sFeld + " BETWEEN " + sVon + " AND" & _
"" + sBis
END IF
CASE "ist größer als"
SELECT CASE VARIANT#(vi)
CASE 8
CASE 10,12
CASE ELSE
sSuch = sFeld + s + sSuch
END SELECT
CASE "ist kleiner als"
SELECT CASE VARIANT#(vi)
CASE 8
CASE 10,12
CASE ELSE
sSuch = sFeld + s + sSuch
END SELECT
END SELECT
IF sWhere = "" THEN
sWhere = "WHERE " + sSuch
ELSE
sWhere = sWhere + " " + sSuch
END IF
IF sWhere <> "" THEN
IF RIGHT$(sWhere,5)=" AND " OR _
RIGHT$(sWhere,4)=" OR " THEN
MSGBOX "Sie haben den rechten Teil der" & _
"Verknüpfung noch nicht definiert.",64,"Abbruch" & _
"..."
EXIT FUNCTION
END IF
END IF
COMBOBOX ADD CBHNDL,%IDC_SUCHBEGRIFF,sSuch
CONTROL ENABLE CBHNDL,%IDC_Starten
END IF
END SELECT
END SELECT
END FUNCTIONIch habe solch ein modernes Tool momentan leider nicht in VB  0 |