21. august 2007 - 10:05Der er
14 kommentarer og 2 løsninger
INSERT INTO - flere tabeller
Hej!
Jeg har en database med p.t. to tabeller, h.h.v. Participants og ArrivalDetails. Jeg har lavet en relation mellem de to databaser, således at ParticipantsID fra første tabel går med i den anden tabel.
Fra en en form skal jeg have skrevet brugernes input ned i databasen.
Jeg har lavet flg. kode, som dog melder fejl om manglende ";" i den SQL-sætningen.
Kan nogen hjælpe med med problemet? Pft.
<% 'Dim variabler Dim objConn Dim strFirstname, strFamilyname, strArrivalDate, strArrivalMonth
'Database forbindelse Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("../../../database/database.mdb")
'SQL strSQL = "Insert into Participants (Firstname, Familyname) values('" & Request.Form("Firstname") & "', '" & Request.Form("Familyname") & "')" Set objRs = objConn.Execute(strSQL) strSQL = "Insert into ArrivalDetails (ArrivalDate, ArrivalMonth) values('" & Request.Form("ArrivalDate") & "', '" & Request.Form("ArrivalMonth") & "') INNER JOIN ArrivalDetails ON Participants.ParticipantID=ArrivalDetails.ParticipantID" Set objRs = objConn.Execute(strSQL) %>
@@identity henter det sidste genereret ID ud. Hvis du f.eks skal indsætte i 3 tabeller men ID'et fra to af dem skal bruges i den 3., vil det se sådan ud:
conn.execute("insert into tabel1(navn) values('Fennec')") set rs = conn.execute("select @@identity as thisID") ID1 = rs("thisID") conn.execute("insert into tabel2(navn) values('Ravnkilde')") set rs = conn.execute("select @@identity as thisID") ID2 = rs("thisID") conn.execute("insert into tabel3(ID1, ID2) values("& ID1 &","& ID2 &")")
Bemærk at @@Identity selecten er ens, men den henter id fra den netop indsatte række.
Jeg har lavet denne med et miks af din og min kode:
conn.execute("insert into Participants(Firstname, Familyname) values('" & Request.Form("Firstname") & "', '" & Request.Form("Familyname")") set rs = conn.execute("select @@identity as thisID") ID1 = rs("thisID") conn.execute("insert into ArrivalDetails(ParticipantID, ArrivalDate, ArrivalMonth) values("& ID1 &",'" & Request.Form("ArrivalDate") & "', '" & Request.Form("ArrivalMonth")") set rs = conn.execute("select @@identity as thisID") ID2 = rs("thisID") conn.execute("insert into DepartureDetails(ParticipantID, DepartureDate, DepartureMonth) values("& ID1 &","& ID2 &",'" & Request.Form("DepartureDate") & "', '" & Request.Form("DepartureMonth")")
men den giver fejlen "Unterminated string constant". Bemærk at i den 3. tabel er der kun ét felt til ID-nr. (du har ID1 og ID2 med, men det er nok OK?)
Ahh ja, der manglede også ) til sidst, som madeindk så fint så :o)
Du kan se at han har smidt ) ind efter det sidste ' tegn.
Hvis du har problemer med en SQL sætning, hjælper det altid at udskrive den til skærmen. Så ville du også havde opdaget at der manglede et ) til sidst.
fennec får lidt flere points for sin "tålmodighed". Håber I begge er tilfredse. Tak for jeres hjælp! God weekend!
Synes godt om
Ny brugerNybegynder
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.