Click to See Complete Forum and Search --> : HOw to add, update, delete record from 2 tables?


tekboy
01-17-2006, 06:32 PM
HOw to add, update, edit, delete record from 2 tables?

buntine
01-18-2006, 05:26 AM
You should perform a "join", demonstrated below:

SELECT t1.*, t2.* FROM TableOne t1, TableTwo t2;

As for data modification, the method will vary amongst databases. Personally, I would just execute a seperate query for each table.

Regards.

Ubik
01-19-2006, 12:01 PM
DELETE from CHILDTABLE where PARENTID=[your record]
EXCECUTE
DELETE from PARENTTABLE where ID=[your record]

Bullschmidt
01-23-2006, 08:22 PM
And here's a snippet of code from a page (invdetail.asp from my sample DB on the Web) that does that. (The transaction and record tracking parts are not actually needed and there are some custom functions used that begin with jpsvb...):

' Begin transaction as updating multiple tables.
objConn.BeginTrans

' Open rs to add.
If InvDetailIDOrig = 0 Then
strSQL = "SELECT * "
strSQL = strSQL & "FROM tblInvDetail "
strSQL = strSQL & "WHERE (1<>1)"

' Open rs.
Set objRS = Server.CreateObject("ADODB.Recordset")
' (1=CursorType of adOpenKeyset in case ever want to get an autonumber of new rec,
' 3=LockType of adLockOptimistic because updating.)
objRS.Open strSQL, objConn, 1, 3

' Add new.
objRS.AddNew
Else ' Open rs to edit.
strSQL = "SELECT * "
strSQL = strSQL & "FROM tblInvDetail "
' No quote for numeric fld.
strSQL = strSQL & "WHERE (InvDetailID=" & jpsvbFixSQL(InvDetailID) & ")"

' Open rs.
Set objRS = Server.CreateObject("ADODB.Recordset")
' (3=LockType of adLockOptimistic because updating.)
objRS.Open strSQL, objConn, , 3

' Move to 1st (and probably only) rec.
objRS.MoveFirst
End If

' Set var.
objRS("InvDetailInvID") = jpsvbBlankToNull(InvDetailInvID)
objRS("InvDetailProdID") = jpsvbBlankToNull(InvDetailProdID)
objRS("InvDetailProdDescr") = jpsvbBlankToNull(InvDetailProdDescr)
objRS("InvDetailProdPrice") = jpsvbBlankToNull(InvDetailProdPrice)
objRS("InvDetailQty") = jpsvbBlankToNull(InvDetailQty)
objRS("InvDetailTotal") = jpsvbBlankToNull(InvDetailTotal)

' Set rec tracking var.
Call SetRecTrack(objRS, "InvDetail")

' Update.
objRS.Update

' Get autonumber.
InvDetailID = objRS("InvDetailID")

' Close rs.
objRS.Close
Set objRS = Nothing

' - - - - -

' Update parent table totals.
' (Similar code is in DelRec().)

' Calc InvSubtotal.
' Sum.
strSQL = "SELECT Sum(InvDetailTotal) AS FldSum "
strSQL = strSQL & "FROM tblInvDetail "
' No quote for numeric fld.
strSQL = strSQL & "WHERE (InvDetailInvID=" & jpsvbFixSQL(InvDetailInvID) & ")"
InvSubtotal = jpsvbDLookup(objConn, objRS, strSQL, 0, 0)

' Set sql.
strSQL = "SELECT * "
strSQL = strSQL & "FROM tblInv "
' No quote for numeric fld.
strSQL = strSQL & "WHERE (InvID=" & jpsvbFixSQL(InvDetailInvID) & ")"

' Open rs.
Set objRS = Server.CreateObject("ADODB.Recordset")
' (3=LockType of adLockOptimistic because updating.)
objRS.Open strSQL, objConn, , 3

' Move to 1st (and probably only) rec.
objRS.MoveFirst

' Set InvSubtotal.
objRS("InvSubtotal") = jpsvbBlankToNull(InvSubtotal)

' Calc & set InvTotal.
InvSalesTax = objRS("InvSalesTax")
InvShipping = objRS("InvShipping")
objRS("InvTotal") = jpsvbBlankToNull(InvSubTotal + InvSalesTax + InvShipping)

' Set rec tracking var.
Call SetRecTrack(objRS, "Inv")

' Update.
objRS.Update

' Close rs.
objRS.Close
Set objRS = Nothing

' End transaction.
objConn.CommitTrans

tekboy
01-24-2006, 07:36 PM
great thanks :D