Avatar billede oleskrogh Nybegynder
03. januar 2007 - 14:13 Der er 5 kommentarer og
1 løsning

Problemer med INSERT INTO

På en side skal brugeren indsætte et selvvalgt antal sætninger.
Først vælges hvormange sætninger man vil indtaste, hvorefter der genereres et dertil afpasset antal tekstfelter.
Efter at disse tekstfelter er udfyldt skal teksterne indsættes i en database. Jeg har prøvet at stykke et script sammen der tager højde for det ikke på forhånd fastsatte antal felter.
Men jeg får fejlmeddelelsel: En sætning var ventet (udfor linien med INSERT INTO).
<%
If (CStr(Request("MM_insert")) = "frm_insert") Then
  If (Not MM_abortEdit) Then
    ' execute the insert
    Dim MM_editCmd
    'Dim intCount, numFields
    Set MM_editCmd = Server.CreateObject ("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_connDiktat_STRING
    MM_editCmd.CommandText = "INSERT INTO tblDiktat (diktat_navn, diktat_beskrivelse, diktat_type"
    intCount=1
    do while intCount<=numFields
    &", opg"&intCount&", vis_ord"&intCount&", rigtigt_ord"&intCount
    intCount=intCount+1
    loop
    &", forfatter) VALUES (?, ?, ?"&_
    intCount=1
    do while intCount<=numFields&_
    ", ?"&_
    intCount=intCount+1
    loop&_
    ", ?)"
    '

ps. jeg ved godt at der mangler forskellige variablers værdier, men de kommer andensteds
Kan nogen mon gennemskue hvad jeg skal gøre her??
/Ole
Avatar billede softspot Forsker
03. januar 2007 - 14:21 #1
Ja, du kan ikke sammensætte strenge på den måde i VBScript. Du skal nok vælge at gemme den genererede SQL-sætning i en midlertidig streng og så tildele den CommandText når den er genereret færdig. Noget i stil med dette:

' execute the insert
Dim MM_editCmd
'Dim intCount, numFields
Set MM_editCmd = Server.CreateObject ("ADODB.Command")
MM_editCmd.ActiveConnection = MM_connDiktat_STRING
sql = "INSERT INTO tblDiktat (diktat_navn, diktat_beskrivelse, diktat_type"

intCount=1
do while intCount<=numFields
  sql = sql & ", opg" & intCount & ", vis_ord" & intCount & ", rigtigt_ord" & intCount
  intCount=intCount+1
loop

sql = sql & ", forfatter) VALUES (?, ?, ?"
intCount=1
do while intCount<=numFields&_
  sql = sql & ", ?"
  intCount=intCount+1
loop

sql = sql & ", ?)"
MM_editCmd.CommandText = sql
Avatar billede oleskrogh Nybegynder
03. januar 2007 - 14:39 #2
det lyder fornuftigt. Jeg kan godt få samlet det hele i en sql-sætning.
Hvor er det så lige CommandText kommer ind i billedet?
Avatar billede softspot Forsker
03. januar 2007 - 14:54 #3
Jeg har flyttet den linie med CommandText ned i bunden af koden. Det er egentlig blot et spørgsmål om hvordan du samler din SQL-sætning... prøv evt. den kode jeg har vist overnfor.
Avatar billede oleskrogh Nybegynder
03. januar 2007 - 15:46 #4
tak - jeg er kommet videre!læg et svar så får du point
Avatar billede softspot Forsker
03. januar 2007 - 16:00 #5
Velbekomme :)
Avatar billede softspot Forsker
03. januar 2007 - 16:10 #6
Tak for point :)
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