Tjena alla. Tror inte Tabellnamnet ska ingå i SELECT satsen som hämtar ID't. Annars kan du gå tillväga på den beprövade sättet med recordset:Hämta senaste id + langa in det i en relaterad tabell.
Har ett lite problem med Access databas. Nämligen så att jag vill först lägga in en post, sedan ta ut det senaste id från posten som lagts in. Efter detta vill jag lägga in flera poster i en relaterad tabell med idet som jag precis fått tillbaka.
Men problemet är att jag får ett error när jag kör den. Det visar sig att jag kan lägga in den första posten i den relaterade tabellen men inte en ytterligare. Då får jag följande fel:
You cannot add or change a record because a related record is required in table 'Projects'.
Min kod ser ut på följande sätt:
If (bProj_Isolated = "on") then
bProj_Isolated = "true"
Else
bProj_Isolated = "false"
End If
sSqlString = "INSERT INTO [Projects] " &_
"(Proj_Number, " &_
"Proj_Name, " &_
"Proj_OwnerId, " &_
"Proj_CreationDate, " &_
"Proj_Status, " &_
"Proj_StartDate, " &_
"Proj_EndDate, " &_
"Proj_Intern, " &_
"Proj_Type, " &_
"Proj_Customer, " &_
"Proj_Ordernumber, " &_
"Proj_Isolated, " &_
"Proj_Information) " &_
"Values(" &_
"'" & sProj_Number & "', " &_
"'" & sProj_Name & "', " &_
"" & Session("UserId") & ", " &_
"#" & now & "#, " &_
"" & iProj_Status & ", " &_
"#" & dProj_StartDate & "#, " &_
"#" & dProj_EndDate & "#, " &_
"" & bProj_IsExtern & ", " &_
"'" & sProj_Type & "', " &_
"'" & sProj_Customer & "', " &_
"" & iProj_OrderNumber & ", " &_
"" & bProj_Isolated & ", " &_
"'" & Replace(sProj_Description, vbcrlf, "<br>") & "')"
oCon.Execute(sSqlString)
sSqlString = "SELECT @@identity " &_
"FROM Projects;"
Set oRs = oCon.Execute(sSqlString)
aProj_Participants = Split(iProj_Participants, ",")
Dim x
For x=0 to Ubound(aProj_Participants)
sSqlString = "INSERT INTO [Projects_conn] (Proj_UserId, Proj_ProjectId)Values(" & aProj_Participants(x) & "," & oRs(0) & ")"
oCon.Execute(sSqlString)
Next
Hoppas nån kan hjälpa mig.Sv: Hämta senaste id + langa in det i en relaterad tabell.
<code>
Dim x
Dim NewId
Const adUseServer = 2
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set oRs = Server.CreateObject("ADODB.Recordset")
oRs.CursorLocation = adUseServer
oRs.Open "Projects", oCon, adOpenKeyset, adLockOptimistic
oRs.AddNew
oRs("Proj_Number") = sProj_Number
oRs("Proj_Name") = sProj_Name
oRs("Proj_OwnerId") = Session("UserId")
oRs("Proj_CreationDate") = Now()
oRs("Proj_Status") = iProj_Status
oRs("Proj_StartDate") = dProj_StartDate
oRs("Proj_EndDate") = dProj_EndDate
oRs("Proj_Intern") = bProj_IsExtern
oRs("Proj_Type") = sProj_Type
oRs("Proj_Customer") = sProj_Customer
oRs("Proj_Ordernumber") = iProj_OrderNumber
oRs("Proj_Isolated") = (bProj_Isolated = "on")
oRs("Proj_Information") = Replace(sProj_Description, vbcrlf, "<br>")
oRs.Update
NewId = oRs("Proj_ProjectId")
oRs.Close
aProj_Participants = Split(, ",")
For x=0 to Ubound(aProj_Participants)
sSqlString = "INSERT INTO [Projects_conn] (Proj_UserId, Proj_ProjectId) VALUES (" & aProj_Participants(x) & "," & NewId & ")"
oCon.Execute(sSqlString)
Next
</code>
Om du har användarna i en separat tabell. Kan du infoga dem med en insert:
<code>
sSqlString = "INSERT INTO [Projects_conn] (Proj_UserId, Proj_ProjectId) SELECT UserId, " & NewId & " FROM Users WHERE UserId IN (" & iProj_Participants & ")"
oCon.Execute(sSqlString)
</code>