30. juni 2011 - 10:09Der er
22 kommentarer og 1 løsning
Flere opslag i streng
Hej, Jeg har en kode hvor jeg ønsker at summe værdierne for en række kontonumre på en given dato ved at slå i en Access Database. Koden fungerer fint, hvis jeg blot summer for dato og ét kontonummer, men hvis jeg ønsker at summe for flere værdier på en given dato fungere koden ikke. Hvordan separeres numrene i min streng?
Koden er som følger:
Function HentLikv(ByVal Enhed As String, ByVal dato As Date)
'Funktionen henter saldo for en given dato i tabellen
Dim ws As DAO.Workspace Dim DB As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim strEnhed As String
'Omformatterer dato dato = Format(dato, "mm-dd-yyyy")
'Vælger mellem x og y If Enhed = "x" Then strEnhed = " AND Nummer =3001859 and 3100222 and 3100222 and 3100222" Else If Enhed = "y" Then strEnhed = " AND Nummer =3001055" Else strEnhed = "" End If End If
'Forbinder til databasen Set ws = DBEngine.Workspaces(0) Set DB = ws.OpenDatabase("S:\....mdb")
'Henter data Let strSQL = "SELECT sum(BogfoertSaldoDKK) as test FROM TABEL WHERE Dato =#" & dato & "#" & strEnhed Set rs = DB.OpenRecordset(strSQL)
Hej, Tak for input. Når jeg anvender dit forslag, så summer den blot for én af kontonumrene. Er der noget andet galt nede i min linje hvor jeg forsøger at summe data fra Access databasen?
Databsen består af mange kontonumrene som indlæses dagligt. Det kan være 50 kontonumre på en given dato, hvor jeg så vil have en sum udvalgte kontonumre.
Hmm, ok, det er Access der er nedenunder - det er en lettere forkrøblet SQL, og jeg kan ikke huske alle steder de går egne veje. Det kan godt være den IN-konstruktion er een af dem.
Du kan som alternativ have en ny tabel med de kontonumre du bruger, og så JOINe dig til resultatet.
Okai, jeg forstår idéen ;-) Men, jeg ved ikke hvordan det skal skrives i koden..
Jeg vil så have to tabeller i Access, hvor den ene er min nuværende med daglig data og den anden tabel er hvor kontonumrene er defineret hvor de hører til. Er det korrekt forstået?
Function HentLikv(ByVal Enhed As String, ByVal dato As Date)
'Funktionen henter saldo for en given dato i tabellen Dim ws As DAO.Workspace Dim DB As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim strEnhed As String
'Omformatterer dato dato = Format(dato, "mm-dd-yyyy")
'Forbinder til databasen Set ws = DBEngine.Workspaces(0) Set DB = ws.OpenDatabase("S:\....mdb")
'Henter data If Enhed = "X" Then Let strSQL = "SELECT sum(BogfoertSaldoDKK) as test FROM TABEL JOIN TABELMEDKONTONR ON TABELMEDKONTONR.YY=TABEL.Nummer WHERE Dato =#" & dato & "#" Set rs = DB.OpenRecordset(strSQL) Else If Enhed = "Y" Then Let strSQL = "SELECT sum(BogfoertSaldoDKK) as test FROM TABEL JOIN TABELMEDKONTONR2 ON TABELMEDKONTONR2.ZZ=TABEL.Nummer WHERE Dato =#" & dato & "#" Set rs = DB.OpenRecordset(strSQL) Else Let strSQL = "" End If End If
Function HentLikv(ByVal Enhed As String, ByVal dato As Date)
'Funktionen henter saldo for en given dato i tabellen LikviditetLPI
Dim ws As DAO.Workspace Dim DB As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim strEnhed As String
'Omformatterer dato dato = Format(dato, "mm-dd-yyyy")
'Forbinder til databasen Set ws = DBEngine.Workspaces(0) Set DB = ws.OpenDatabase("S:\RF\Database\RFData.mdb")
'Henter data If Enhed = "LPK" Then Let strSQL = "SELECT sum(BogfoertSaldoDKK) as test FROM LikviditetLPK JOIN LPKkontonumre ON LPKkontonumre.LPK=LikviditetLPK.Nummer WHERE Dato =#" & dato & "#" Set rs = DB.OpenRecordset(strSQL) Else ' If Enhed = "LPB" Then Let strSQL = "SELECT sum(BogfoertSaldoDKK) as test FROM LikviditetLPK JOIN LPBkontonumre ON LPBkontonumre.LPB=LikviditetLPK.Nummer WHERE Dato =#" & dato & "#" Set rs = DB.OpenRecordset(strSQL) 'Else ' Let strSQL = "" 'End If End If
I den sidste kode du viser, udfører du to sql-sætninger, sådan som du har udkommenteret noget af if-sætningen. Det er selvfølgelig ikke rigtigt, men jeg kan ikke se om det har nogen indflydelse på fejlen.
Jeg giver op! ;-( Jeg er rimelig ny i VBA og er for mongol til at løse problemet desværre. Venter på en kommer hjem fra ferie der har lidt mere teknisk snilde.
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.