vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Hilfe ! ! Wie programmiere ich eine Suchabfrage? 
Autor: unbekannt
Datum: 08.03.03 18:26

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 FUNCTION
Ich habe solch ein modernes Tool momentan leider nicht in VB
0
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Hilfe ! ! Wie programmiere ich eine Suchabfrage?533magnevist08.03.03 18:12
Re: Hilfe ! ! Wie programmiere ich eine Suchabfra...636unbekannt08.03.03 18:26
Und ein Bild sagt mehr als tausend Worte (oT)357unbekannt08.03.03 18:55

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel