09. januar 2011 - 18:23 Der er 10 kommentarer og
1 løsning

Problemer med sql-sætning i VBA Excel

Jeg skal have lavet en sætning, som vælger alle "linjer" i en database, som har samme værdig i rækken "Kunder", som den værdi jeg skriver i textbox2. Pt ser mine kode sådan her ud:

Set rsFaktura = db.OpenRecordset("SELECT * FROM Faktura WHERE Kunde = UserForm2.TextBox2.Text")

Når jeg så skriver et navn, som jeg VED findes i databasen, får jeg følgende fejl:
Run-time error '3061': Der er for få parametre. Der var ventet 1.

Det finder jeg lidt mærkeligt.

På forhånd tak for hjælpen.
Avatar billede madiedk Nybegynder
09. januar 2011 - 18:48 #1
prøv med :

Set rsFaktura = Db.OpenRecordset("SELECT * FROM Faktura WHERE Kunde = '" & UserForm2.TextBox2.Text & "'")

eller


Set rsFaktura = Db.OpenRecordset("SELECT * FROM Faktura WHERE Kunde = " & UserForm2.TextBox2.Text & "")
Avatar billede madiedk Nybegynder
09. januar 2011 - 18:50 #2
lisd svært at se, men først ' så " og slut med ' så " og så " igen
09. januar 2011 - 18:57 #3
Findes der en forklaring på, hvad alle de "pinger" gør godt for? :)
09. januar 2011 - 18:59 #4
og det virker forresten. Nu skal jeg bare lige gøre det samme med 2 andre felter. Jeg prøver lige at rette i det og se om det virker endnu.
09. januar 2011 - 19:06 #5
Jeg skal lave samme søgning, bare på en dato. Jeg skriver stadigvæk i textbox2, men jeg skal nu have koden til at finde indlæg, hvor datoen i feltet "BetalingsDato" er før den dato jeg har indskrevet, men samtidig skal datoen i feltet "FakturaDato" også være lavere end den dato jeg har skrevet i textbox2. Altså hvis jeg søger på 12-12-2010, skal den give mig alle faktura, som er oprettet før d. 12-12, men som først er betalt efter den dato. Håber det er til at forstår.

I den 3. søgning skal jeg have den til at vise alle indlæg, hvor feltet "Betalt" = 0. Det kan jeg heller ikke lige få til at virke.

de to Dato-felter er i formatet "Dato" i access, mens feltet "Betalt" er som tal.
Avatar billede madiedk Nybegynder
09. januar 2011 - 19:06 #6
Det er for at "escape" sætningen. det vil sige at hvis nu faktisk havde en kunder der hed teksten "UserForm2.TextBox2.Text" så skulle du gøre som du først gjorde. Hvis du derimod vil referere til variablen UserForm2.TextBox2.Text så skal du gøre som jeg skrev. så sætningen, faktisk kommer til at bestå at først en sætning, så en variabel og så en sætning igen. forstå du hvad jeg mener?
09. januar 2011 - 19:07 #7
Bare glem det med Betalt. Den har jeg lige løst :)
09. januar 2011 - 20:32 #8
Jo, det forstår jeg godt. Så var det også derfor den ikke kom frem med property listen, når jeg skrev textbox2. :) Men den der med at søge på flere ting, i flere celler, det kan jeg ikke helt få til at virke.
09. januar 2011 - 21:55 #9
If UserForm2.CheckBox2.Value = True Then
    Dato = UserForm2.TextBox2.Text
   
    If Dato <> "" Then
        Dato1 = Dato & " 00:00"
    End If
   
    Ark1.Cells(1, 15) = Dato1
    Set rsFaktura = db.OpenRecordset("Select * from Faktura where BetalingsDato > '" & Dato1 & "' and FakturaDato < '" & Dato1 & "' or Betalt = 0")
End If

sådan ser det ud lige nu, men jeg får hele tiden fejlen:
Datatypen stemmer ikke overens i kriterieudtrykket.

Hvad gør jeg forkert?
10. januar 2011 - 14:41 #10
Jeg har oprettet en ny tråd, med det sidste spg. Synes du har gjort hvad jeg bad om, for de 200 point, så bare opret et svar, så får du point. :)
21. januar 2011 - 16:40 #11
Jeg venter lige et par dage, og ser om du skriver et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester