Just nu i M3-nätverket
Jump to content

SQL-anrop och AccessdB


Maj Gunnarsson

Recommended Posts

Maj Gunnarsson

Hej!

 

Jag har problem med att få in information i två tabeller som ligger i Access. Det är en 1:N många relation mellan dessa tabeller. Vi gör INSERT till den första tabellen sedan behöver vi den tabellens id för att kunna lägga in info i den andra tabellen! Vi gör alltså först en INSERT sedan en SELECT som hämtar id:et i första tabellen. Och till sist gör vi en INSERT i den andra tabellen och lägger då in id:et i den tabellen. Måste man göra såhär om man har två tabeller som har en 1:N relation? Vi får detta felmeddelandet:

 

Microsoft VBScript compilation error '800a0401'

 

Expected end of statement

 

/data/poplagring2.asp, line 19

 

SQL = SQL + "& int(RS2("idbook"))

------------------------^

 

//MG

Link to comment
Share on other sites

Ok... Jag gör ett försök nu Maj, så får vi se vad som händer. Jag antar att du gör någotnting så här:

 

SQL = "INSERT INTO tabell..."

set rs = conn.Execute(SQL)

variabel = rs("id") /Det värde du vill använda

SQL = "SELECT *... WHERE id = " &id

set rs2 = conn.Execute(SQL)

 

Närmar vi oss?

 

/M

Link to comment
Share on other sites

Maj Gunnarsson

Hejsan!

 

Jag har skrivit koden som nedan som nedan:

 

<%

Set Connection = Server.CreateObject("ADODB.Connection")

Connection.Open Application("dbknowmanpath")

 

Connection.BeginTrans

set RS = server.createobject("ADODB.recordset")

SQL = "INSERT INTO tblbook (url) VALUES ('" & (Request.Form("url")) &"');"

Set RS = Connection.Execute(SQL)

 

set RS2 = server.createobject("ADODB.recordset")

SQL = "SELECT idbook FROM tblbook"

Set RS2 = Connection.Execute(SQL)

 

Connection.CommitTrans

Connection.BeginTrans

set RS1 = server.createobject("ADODB.recordset")

SQL = "INSERT INTO tbldata (idbook, rank, indate, comment) VALUES ("

SQL = SQL + "& int(RS2("idbook"))

SQL = SQL + &" , '" & (Request.Form ("rank"))

SQL = SQL + &"', '" & (Request.Form ("indate"))

SQL = SQL + &"', '" & (Request.Form("comment"))

SQL = SQL + &"');"

set RS1 = Connection.Execute(SQL)

Connection.CommitTrans

Set Connection = Nothing

%>

 

Jag gör SELECT satsen för jag behöver tblbooks id när jag gör INSERT till tbldata med värden från mitt formulär. Annars får jag felmeddelanden som säger att jag behöver idbook.

 

I SELECT satsen så får jag ut det första id:et som finns i tabeller, men jag vill ha det sist inkommna (=det största värdet). Men hur skriver man det villkoret?

 

Detta nedanstående felmeddelande fick jag som sagt när jag körde koden.....varför??

 

Microsoft VBScript compilation error '800a0401'

 

Expected end of statement

 

/data/poplagring2.asp, line 19

 

SQL = SQL + "& int(RS2("idbook"))

------------------------^

 

Hoppas att någon kan ge förslag på lösningar..

 

//MG

 

Link to comment
Share on other sites

Jag tror felet ligger i nån fnutt kanske? Om man skriver hela SQL:en på en rad så ser det lite underligt ut..:

 

Values(""& int(RS2("idbook")),& (Request.Form ("rank")), & (Request.Form ("indate")), & (Request.Form("comment"))"');"

 

...men jag vet inte...

/B

Link to comment
Share on other sites

1. Du vill ha ut ett specifik id, och det ska inte vara det första utan det sista. Som du nu har skrivit får du alltid ut det första. Du måste lägga till en WHERE sats i SELECT'en som tar ut rätt post.

 

2. Min personliga åsikt är att du har rört till koden en aning.

Link to comment
Share on other sites

Maj Gunnarsson

Tack för alla svar :)

 

Nu är det löst (i alla fall detta SQL-anrop)....

 

Det var i slutänden ett "fnutt-problem"".....

 

Vi tog förresten ut det sista värdet i fältet idbook ur tblbook med :

 

SQL = "SELECT TOP 1 (idbook) FROM tblbook ORDER BY idbook DESC"

 

// Maj :)

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...