Avatar billede mcgyverking Nybegynder
22. juli 2002 - 22:14 Der er 15 kommentarer og
2 løsninger

Hvordan samler jeg en sql streng?

Hejsa.

Jeg er ved at skal indsætte en det felter fra en form, i en database. Jeg kunne godt tænke mig at have to variabler med sql værdierne ala dette:

' Sæt ind i database
sqlTables = "tid,sagsnr osv osv"
sqlValues = dato,sagsnr osv osv
Rs.open "INSERT INTO Grunde("&sqlTables&") Values('"&sqlValues&"')",con

Men jeg får hele tiden denne fejl:

Error Type:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
/admin/script/grund_tilfoj_db.asp, line 28, column 16
sqlValues = dato,sagnr
---------------^

Nogen som kan hjælpe mig med at samle sql-tråden??

Mvh Frederik
Avatar billede neteffect Nybegynder
22. juli 2002 - 22:27 #1
Det er tekststrenge, du skal bygge, så kommaerne skal med i strengene:

sqlvalues=dato & "," & sagsnr & "," osv osv
Avatar billede neteffect Nybegynder
22. juli 2002 - 22:30 #2
sqlTables er god nok, selv om navnet måske er lidt misvisende. sqlFields ville have været bedre, synes jeg.

Men sqlValues skal bygges som en streng, der er en blanding af "," og dine variabler
Avatar billede mcgyverking Nybegynder
22. juli 2002 - 22:35 #3
Måske du kan se hvad jeg gør forkert her:

' Fakta om grund
Dim sagnr,vej, nr, zip, by, pris
dato    = Now()
sagnr    = Request.Form("sagnr")
vej        = Request.Form("vej")
nr        = Request.Form("nr")
zip        = Request.Form("zip")
city    = Request.Form("city")
pris    = Request.Form("pris")
' Fakta om sælger
Dim firma, navn, tlf1, tlf2, fax, mail,evt
firma    = Request.Form("firma")
navn    = Request.Form("navn")
tlf1    = Request.Form("tlf1")
tlf2    = Request.Form("tlf2")
fax        = Request.Form("fax")
mail    = Request.Form("mail")
evt        = Request.Form("evt")


' Sæt ind i database - Grundezip,pris
sqlFields = "tid,sagnr,adr,nr,city,pris"
sqlValues = dato&","&sagnr&","&vej&","&nr&","&city&","&pris
Rs.open "INSERT INTO Grunde("&sqlFields&") Values('"&sqlValues&"')",con


Mvh Frederik
Avatar billede nih Novice
22. juli 2002 - 22:42 #4
sqlFields = "tid, sagnr, adr, nr, city, pris"

sqlValues = dato & "," & sagnr & ",'" & vej & "'," & nr & "," &city& "," & pris

Rs.open "INSERT INTO Grunde(" & sqlFields & ") Values('" & sqlValues & "')",con

prøv at bruge mellemrumstasten OG
hvis eks feltet [adr] er et tekstfelt HUSK de små ' som  vist.

Niels
Avatar billede neteffect Nybegynder
22. juli 2002 - 22:44 #5
city er ikke dim'et, men du bruger nok ikke option explicit (anbefales!), så det giver ikke nogen fejl. Hvilken fejl. forresten?
"BY" er et reserveret ord i SQL, så det var en god ide at skifte til city. Hvad hedder feltet i databasen? city forhåbentlig.
Avatar billede neteffect Nybegynder
22. juli 2002 - 22:46 #6
Og nih har selvfølgelig set rigtigt, der mangler ' om tekstfelterne.
Avatar billede neteffect Nybegynder
22. juli 2002 - 22:49 #7
Bortset fra det er det en god idé at samle hele sit sql-statement i en string, for så kan man lægge en response.write minSQLstreng ind, når man skal finde fejl.
Avatar billede mcgyverking Nybegynder
22. juli 2002 - 22:52 #8
Neteffect>> Ja det tror jeg næsten jeg gør for jeg kan stadig ikke få det til at virker... (irriterende ;-)

Min streng ser nu sådan ud:


' Sæt ind i database - Grundezip,pris
sqlFields = "tid,sagnr,adr,nr,city,pris"
sqlValues = "dato & "," & sagnr & "," & vej & "," & nr & "," & city & "," & pris"
Rs.open "INSERT INTO Grunde("&sqlFields&") Values('"&sqlValues&"')",con

fejl til følge:

Slut på sætning var ventet
/admin/script/grund_tilfoj_db.asp, line 28, column 21
sqlValues = "dato & "," & sagnr & "," & vej & "," & nr & "," & city & "," & pris"
--------------------^
Avatar billede mcgyverking Nybegynder
22. juli 2002 - 22:53 #9
Okay har lige fjernet de to " " til sidst...
Avatar billede mcgyverking Nybegynder
22. juli 2002 - 22:54 #10
Får nu denne fejl:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Number of query values and destination fields are not the same.
/admin/script/grund_tilfoj_db.asp, line 29
Avatar billede nih Novice
22. juli 2002 - 22:55 #11
Og den første ;)
Avatar billede mcgyverking Nybegynder
22. juli 2002 - 22:57 #12
Jah ;-)
Avatar billede mcgyverking Nybegynder
22. juli 2002 - 22:59 #13
Prøv at se hvad jeg får hvis jeg laver dette;

sqlFields = "tid,sagnr,adr,nr,city,pris"
sqlValues = dato & "," & sagnr & "," & vej & "," & nr & "," & city & "," & pris
response.write sqlvalues
response.end

Resultat: 22-07-2002 23:03:41,,,,,

Er der ikke noget galt her??
Avatar billede mcgyverking Nybegynder
22. juli 2002 - 23:08 #14
Okay nu er sql'en så'en her ud og den virker:

Rs.open "INSERT INTO Grunde(tid,sagnr,adr,nr,city,pris,firma,navn,tlf1,tlf2,fax,email,evt)" _
& "Values('"&dato&"','"&sagnr&"','"&vej&"','"&nr&"','"&city&"','"&pris&"','"&firma&"','"&navn&"','"&tlf1&"','"&tlf2&"','"&fax&"','"&mail&"','"&evt&"')",con


Er der en "pænere" måde at bryde/sætte den op på?

I får begge points.. Tag for hjælpen..

Mvh Frederik
Avatar billede nih Novice
22. juli 2002 - 23:21 #15
takker for pts.
Jeg plejer at opdele den således
strInto = "INSERT INTO Grunde"
strFelt = "(tid, sagnr, adr, nr, city, pris, firma, navn, tlf1, tlf2, fax, email, evt)"
strVal  = "Values (" & dato & "','" & sagnr &"','" & vej &" osv.....
strSQL = strInto & strFelt & strVal

Rs.open strSQL,con

Niels
Avatar billede mcgyverking Nybegynder
22. juli 2002 - 23:26 #16
Det ser godt ud!

Takker mange gange Niels og NetEffect...

Sov godt! ;-)
Avatar billede neteffect Nybegynder
23. juli 2002 - 08:00 #17
Godmorgen! - Og tak for points.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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