12. december 2005 - 14:26Der er
20 kommentarer og 1 løsning
Søg i database med VBA
Jeg har lavet en database i access og skal nu bruge et filter, som kun viser indhold med en bestemt dato. Jeg har lavet funktionen med varenr, men datoen står i en box med både dato og klokkeslet (08-12-2005 14:30:26), men jeg vil gerne have at jeg KUN søger på datoen. min kode til at sortere efter varenr ser således ud:
Søg = InputBox("Søg på varenr.:", "Søg")
Set db = OpenDatabase("D:\Texit\Texit.mdb") Set rsOrdre = db.OpenRecordset("SELECT * FROM Ordre WHERE Ordrenr = '" & Søg & "'", dbOpenSnapshot)
Jeg bruger samme variabel til datosøgning, men ændre selvfølgelig ordrenr til Dato.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Select Case LkUpDatoType Case 1 StrDatType = "tblaktiv.Vdato" Case 2 StrDatType = "Tilgang" Case 3 StrDatType = "Afgang" Case 4 StrDatType = "Tilstede" End Select
Function TidsQuery(ByVal FieldValFra As Date, ByVal FieldValTil As Date, ByVal StrDatType As String) As String Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String
If FieldValFra = 0 And FieldValTil = 0 Then 'der er intet søgekriterie - case 1 TidsQuery = "" Else If StrDatType = "Tilstede" Then ' vi skal lige kigge købt og solgt If FieldValTil = 0 Then 'der må være en startdato - case 2 Str1 = "[Afgang]" & " >= #" & Format$(FieldValFra, "mm-dd-yyyy") & "#" Str2 = "[Afgang]" & " is Null" TidsQuery = "(" & Str1 & " OR " & Str2 & ")" ElseIf FieldValFra = 0 Then ' der må være en slutdato - case 4 Str1 = "[Tilgang]" & " <= #" & Format$(FieldValTil, "mm-dd-yyyy") & "#" Str2 = "[Tilgang]" & " is Null" TidsQuery = "(" & Str1 & " OR " & Str2 & ")"
ElseIf FieldValTil >= FieldValFra Then ' der er både slut og start dato Str1 = "[Afgang]" & " >= #" & Format$(FieldValFra, "mm-dd-yyyy") & "#" Str2 = "[Afgang]" & " is Null" Str3 = "[Tilgang]" & " <= #" & Format$(FieldValTil, "mm-dd-yyyy") & "#" Str4 = "[Tilgang]" & " is Null" '& "# AND " & StrDatType & " <= #" & Format$(FieldValTil, "mm-dd-yyyy") & "#" TidsQuery = "((" & Str1 & " OR " & Str2 & ") AND (" & Str3 & " OR" & Str4 & "))" Else ' du må have byttet om på datoerne MsgBox "De har byttet om på start/slut datoer - ingen datovirkning" TidsQuery = "" End If Else If FieldValTil = 0 Then 'der må være en startdato - case 2 Str1 = StrDatType & " >= #" & Format$(FieldValFra, "mm-dd-yyyy") & "#" Str2 = StrDatType & " is Null" TidsQuery = "(" & Str1 & " OR " & Str2 & ")" ElseIf FieldValFra = 0 Then ' der må være en slutdato - case 4 Str1 = StrDatType & " <= #" & Format$(FieldValTil, "mm-dd-yyyy") & "#" Str2 = StrDatType & " is Null" TidsQuery = "(" & Str1 & " OR " & Str2 & ")"
ElseIf FieldValTil >= FieldValFra Then ' der er både slut og start dato Str1 = StrDatType & " >= #" & Format$(FieldValFra, "mm-dd-yyyy") & "# AND " & StrDatType & " <= #" & Format$(FieldValTil, "mm-dd-yyyy") & "#" TidsQuery = "(" & Str1 & ") " Else ' du må have byttet om på datoerne MsgBox "De har byttet om på start/slut datoer - ingen datovirkning" TidsQuery = "" End If End If End If
Datoen i min database er gemt som en tekst og ikke i et datoformat. og jeg kan ikke ændre på måden den er skrevet på, for teksten hentes fra en maskine.
Terry den kode du har givet mig, burde sammenlinge de 10 karakter jeg skriver og gemmer i søg variablen med de første 10 karaktere i min datocelle i databasen ikke?
jeg har ændre den, så den ser sådan her ud og det virker ik: Søg = InputBox("Søg på Dato:", "Søg")
Set db = OpenDatabase("D:\Texit\Texit.mdb") Set rsOrdre = db.OpenRecordset("SELECT * FROM Ordre WHERE Starttid = '" & Left(Søg, 10) & "'", dbOpenSnapshot)
Why dont you use the SQL I gave in my last comment? If you put the SQL in a string first then you can copy it to a query in Access to see the result. Are you workingin Access?
Dim sSQL as string
sSQL = "SELECT * FROM Ordre WHERE Left([starttid],10)= '" & Left(Søg, 10) & "'"
i have tried your sql and it doesn't work. but i have made it work now, without using sql. But thx for the help any way. Maybe u can help me with another thing? i would like to clear an area in an excell document. I know you can use the code ark2.cells.clear, but i don't want to clear all the cells. and i also need a code for checking if a cell is empty.
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.