Avatar billede bahne2000 Novice
18. september 2007 - 11:50 Der er 27 kommentarer

brug af variabel i SQL query

Jeg har defineret en variabel ved

X = Selection.Copy

Jeg vil nu gerne bruge denne variabel i en SQL query.

"WHERE (Navn_=' X ....."

Jeg kan ikke lige få det til at virke, skal jeg have noget foran X i SQL query for at den ved det er variablen?
Avatar billede tjacob Juniormester
18. september 2007 - 12:06 #1
Du kan ikke referere til en variabel i en streng på denne måde.

Prøv dette:
Dim SQLstr As String
SQLstr="WHERE (Navn_=" & X & " ...resten af din SQL streng"
Avatar billede sjh Nybegynder
18. september 2007 - 12:08 #2
Noget i den stil ?


X = Selection.Copy
strSQL = "WHERE (Navn_='" & X & "')"
Avatar billede bahne2000 Novice
20. september 2007 - 08:58 #3
umiddelbart lader det til ikke at virke.
hvordan "printer" jeg indholdet af variablen ud i en celle for at teste hvad variablen indeholder?
Avatar billede tjacob Juniormester
20. september 2007 - 09:48 #4
Jeg går ud fra at du har koden i Visual Basic Editoren?
Du skal bruge noget debugging:
Du kan insætte en linie umiddelbart efter du har tilskrevet variablen værdi:

Debug.Print 'Din variabel'

Dette vil skrive variablen i "Immediate" vinduet, som du kan åbne efter rutinen er kørt. Du kan også indsætte et breakpoint i linien efter (klik i det grå felt til venstre for kodevinduet). Så stopper afviklingen af din kode her, og du kan f.eks. se værdien af variablen i "Locals" vinduet.
Avatar billede bahne2000 Novice
20. september 2007 - 10:03 #5
ja ville gerne have noget debugging ind i koden. er ikke vant til VB har kun kodet PHP til den store guldmedalje. :D

prøver lige..
Avatar billede bahne2000 Novice
20. september 2007 - 10:14 #6
hmm kommer intet frem i immediate vinduet.

X = Selection.Copy
Debug.Print 'X'
Avatar billede tjacob Juniormester
20. september 2007 - 10:17 #7
du skal ikke skrive anførselstegn -enkelte eller dobbelte
Avatar billede tjacob Juniormester
20. september 2007 - 10:18 #8
For i øvrigt skal du nok teste hele sql strengen, og ikke kun X
Avatar billede bahne2000 Novice
20. september 2007 - 10:19 #9
ok.. den returnerer "TRUE"
Avatar billede tjacob Juniormester
20. september 2007 - 10:23 #10
TRUE må være resultatet af et eller andet, eller også er det en Boolean variabel der indeholder denne værdi. Har du defineret din SQL streng som en String?
Avatar billede bahne2000 Novice
20. september 2007 - 10:26 #11
en kollega der har lavet SQL querien.. den ligger i en "WITH - END WITH" tror umiddelbart det er koden der er fanget med makro hvor han har åbnet MSQuery og indtastet sine kriterier osv.
Avatar billede bahne2000 Novice
20. september 2007 - 10:28 #12
With Selection.QueryTable
Avatar billede tjacob Juniormester
20. september 2007 - 10:33 #13
OK. Men jeg kan ikke rigtigt hjælpe dig yderligere uden noget mere kode. Prøv at lege lidt med de forskellige Debug muligheder, og se om du kan lokalisere problemet.
Avatar billede bahne2000 Novice
20. september 2007 - 10:51 #14
ok men min største problem er at få brugt variablen i sql querien.

... "WHERE ( tabel1.navn_=' & X " & Chr(13) & ".......
Avatar billede tjacob Juniormester
20. september 2007 - 11:10 #15
SQL strenge er notorisk 'trælse' pga syntaksen og anførselstegnene: Så vidt jeg kan vurdere ser sjh's forslag rigtigt ud. Hvis ikke den duer, så bliver du nødt til at skrive (her):

1. SQL strengen som den så ud da den virkede (uden X)
2. SQL strengen som den skal se ud (med X).

Men jeg er ikke nogen ørn til hverken databaser eller SQL. Min første kommentar var simpelthen en hjælp til VB syntaks. Der må andre eksperter på banen...
Avatar billede sjh Nybegynder
20. september 2007 - 11:37 #16
Ja, anførselstegn eller plinger bruges når det er en string og uden plinger når det er nummer / tal.. (dog kan MySQL godt køre nummer og tal med plinger, men det kan MSSQL ikke)


strSQL = "SELECT felt1, felt2 FROM Tabel1 WHERE felt1 = 1234"

bliver til:

intNum = 1234
strSQL = "SELECT felt1, felt2 FROM Tabel1 WHERE felt1 = " & intNum & ""



strSQL = "SELECT felt1, felt2 FROM Tabel1 WHERE felt1 = 1234"

bliver til:

strName = "Jens"
strSQL = "SELECT felt1, felt2 FROM Tabel1 WHERE felt2 = '" & strName & "'"
Avatar billede bahne2000 Novice
20. september 2007 - 11:42 #17
hmm tror måske at problemet er at variablen er lig 0.
Range("A1").Select
B = ActiveCell.Next.Select
X = B.Value
Avatar billede bahne2000 Novice
20. september 2007 - 11:46 #18
ok..

Range("A1").Select
    ActiveCell.Next.Select
    X = Selection.Value

indeholder nu en værdi iflg. immediate vinduet
Avatar billede bahne2000 Novice
20. september 2007 - 11:55 #19
min SQL ser således ud

With Selection.QueryTable
        .CommandText = Array( _
        "SELECT felt1, felt2, felt3, felt4, felt5 FROM Tabel1 WHERE (tabel1.felt1_='& X &')")
end with
Avatar billede bahne2000 Novice
20. september 2007 - 12:07 #20
men det lader til at den ikke fanger X, der kommer nemlig ikke noget ud af den.
Avatar billede bahne2000 Novice
20. september 2007 - 13:08 #21
Kan man lave en reference alla Range("A6") i WHERE =  ??
Avatar billede sjh Nybegynder
20. september 2007 - 13:21 #22
Ja eller (.Value og så .QueryTable.CommandText)

With Selection
        .QueryTable.CommandText = Array( _
        "SELECT felt1, felt2, felt3, felt4, felt5 FROM Tabel1 WHERE (tabel1.felt1_='& .Value &')")
end with
Avatar billede sjh Nybegynder
20. september 2007 - 13:29 #23
Nej den duer ikke :D du mangler 2 gåseøjne..

"SELECT felt1, felt2, felt3, felt4, felt5 FROM Tabel1 WHERE (tabel1.felt1_='" & .Value & "')")
Avatar billede sjh Nybegynder
20. september 2007 - 13:34 #24
Du kan ikke gøre som i php.. med variabler.

sådan ville du gøre i php:
$strSQL= "SELECT ... FROM ... WHERE ... = '$variable'";

sådan skal det gøres i vb:
strSQL= "SELECT ... FROM ... WHERE ... = '" & variable & "'";
Avatar billede sjh Nybegynder
20. september 2007 - 13:35 #25
Ja ikke med ; i vb :P

sådan skal det gøres i vb:
strSQL= "SELECT ... FROM ... WHERE ... = '" & variable & "'"
Avatar billede sjh Nybegynder
20. september 2007 - 13:44 #26
Det nemmeste for dig er nok at du skriver din sql-string som den skal se ud.

så åbner du notepad og skriver dine variabler.. fx.

" & variable1 & "
" & variable2 & "

så kopier du dine variabler ind der hvor de skal være fx.

"SELECT felt1, felt2 FROM Tabel1 WHERE (tabel1.felt1_='VARIABLE')"

det bliver så fx. til:

"SELECT felt1, felt2 FROM Tabel1 WHERE (tabel1.felt1_='" & variable1 & "')"

og eller

"SELECT felt1, felt2 FROM Tabel1 WHERE (tabel1.felt1_='" & variable2 & "')"
Avatar billede bahne2000 Novice
20. september 2007 - 13:52 #27
YES!!!!!!
Jeg kan nu informere om at det hele virker! :)

tak for hjælpen
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