01. august 2001 - 14:08Der er
10 kommentarer og 1 løsning
Søgning i access
Hej. Jeg har lavet følgende SQL-forespørgsel, som søger efter hvad input der indtastes i søgefelt, søgefelt1 og søgefelt2 (eller bare i ét af felterne):
SELECT Final.* FROM Final WHERE (((Final.Nummer) Like \'*\' & [Forms]![Søg].[Søgefelt] & \'*\') AND ((Final.Navnet) Like \'*\' & [Forms]![Søg].[Søgefelt1] & \'*\') AND ((Final.[Nace-1]) Like \'*\' & [Forms]![Søg].[Søgefelt2] & \'*\'));
Problemet er bare, at sql-forespørgslen medtager blank værdi( Null) i søgningen. Så hvis jeg skriver \'grønlandsfly\' i søgefelt1 og ikke skriver noget i de 2 andre søgefelter, medtager den kun de poster som indeholder \'grønlandsfly\', men som ikke indeholder Final.Nummer og Final.Nace-1.....Dvs. den udelader poster, hvor der er noteret et Nummer og et Nace-1.......
Er der nogle der har løsningen hvad jeg skal skrive i SQL\'en, så den lader være med at søge på et søgefelt, hvis ikke der er indtastet i det??
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
numsi, you should build your SQL dynamically. For each field you test if anything is entered if so append it too your SQL if not goo too thenext field. Takes longer to make, but much more flexible.
numsi> decided to show you an example here: It is JUST and example you will obviously need to modify it to your fields, but it should give you some idea! The function fldIsEmpty could be placed in a module. The ...WHERE 1.... is just a way to avoid haviung to test if I have to use AND.
Dim stWhere As String
stWhere = \"SELECT * FROM YourTbale WHERE 1\"
If Not fldIsEmpty(Me.cboDistrict) Then stWhere = stWhere & \" AND [DistrictID] = \" & Me.cboDistrict End If
If Not fldIsEmpty(Me.cboOwner) Then stWhere = stWhere & \" AND [OwnerID] = \" & Me.cboOwner End If
If Not fldIsEmpty(Me.cboBuilding) Then stWhere = stWhere & \" AND [BuildingID] = \" & Me.cboBuilding End If
stWhere = stWhere & \";\"
Function fldIsEmpty(fld As Variant)
If IsNull(fld) Or fld = \"\" Or IsNull(Len(fld)) Then fldIsEmpty = True Else fldIsEmpty = False End If
Nu har jeg ikke rigtig erfaring med VBA, men skal jeg bare oprette et nyt modul, og så tilføje det du har skrevet? Hvad betyder Me.cboDistrict? Er [DistrictID] et felt i tabellen eller er det søgefeltet?
Jeg bruger min forespørgsel som et filter. I min søgeformular har jeg nogle søgefelter og en knap som udfører søgningen. Når der trykkes på søgeknappen afspilles en makro som anvendes på formularen kunder.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.