Cerco di spiegarmi e così potete dirmi tu dove è l'errore e come correggerlo perchè ci sto andando al manicomio.
Io ho 2 tabelle DOCMAST E DOCDETT così strutturate:

DOCMAST.codcliente è una chiave
DOCMAST.numerodoc è una chiave
e poi ci sono gli altri campi

DOCDETT.codcliente è una chiave
DOCDETT.numerodoc è una chiave
DOCDETT.contarighe è una chiave
e poi ci sono gli altri campi

le tabelle sono collegate tra loro così: DOCMAST.codcliente = DOCDETT.codcliente , DOCMAST.numerodoc = DOCDETT.numerodoc
quindi credo che per un record di DOCMAST ci possono essere molti record di DOCDETT , quindi uno a molti.

Io devo effettuare un UPDATE contemporaneo su queste 2 tabelle apparentemente facile:
Ovvero devo aggiornare i campi numerodoc e statodoc su DOCMAST (un record solo)
e devo aggiornare il solo campo numerodoc su DOCDETT (n possibili record)

Devo aggiornare solo i campi numerodoc e statodoc (non sto a spiegarti il motivo) che sono uguali a 0 e a T rispettivamente, quindi aggiorno quando trovo numerodoc=0 e statodoc=T

quindi l'ho scritta così....

codice:
qry = "begin transaction" & vbcrlf
qry = qry & " UPDATE dbo.DOC_MAST "
qry = qry & " SET DONUMDOC = " + replace(pratica,"'","''") + " , DOSTATO = '" + replace(stato,"'","''") + "' " & vbcrlf
qry = qry & " WHERE DONUMDOC = " + replace(praticatemp,"'","''") + " AND DOSTATO = '" + replace(statotemp,"'","''") + "' AND DOCODCLI = " + replace(codcli,"'","''") + " " & vbcrlf
qry = qry & "if @@error <> 0 begin rollback RETURN end" & vbcrlf
	
qry = qry & " UPDATE dbo.DOC_DETT "
qry = qry & " SET DONUMDOC = " + replace(pratica,"'","''") + " " & vbcrlf
qry = qry & " WHERE DONUMDOC = " + replace(praticatemp,"'","''") + " AND DOCODCLI = " + replace(codcli,"'","''") + " " & vbcrlf
qry = qry & "if @@error <> 0 begin rollback RETURN end" & vbcrlf
	
qry = qry & "COMMIT TRANSACTION" & vbcrlf
on error resume next
set objRs = objcon.Execute(qry)
considerate per esempio che STATO vale G, PRATICA vale 26, PRATICATEMP vale 0, STATOTEMP = T e CODCLI vale 1.

Su DOCMAST quando trovi un record che ha 0 come praticatemp, T come statotemp e 1 come numero cliente -> allora cambia lo stato da T a G e il numero da 0 a 26 (e ce ne sarà 1 solo di record così)
Su DOCDETT invece quando trovi un record che ha 0 come praticatemp e 1 come numero cliente -> allora cambia il numero da 0 a 26 (e ce ne possono essere n così)

Purtroppo non c'è verso di farla girare.
Ho controllato tutti i campi e i riferimenti e i tipi di campo sono corretti.
Ho provato a stampare la stringa e mi dà questo:
begin transaction UPDATE dbo.DOC_MAST SET DONUMDOC = 26 , DOSTATO = 'G' WHERE DONUMDOC = 0 AND DOSTATO = 'T' AND DOCODCLI = 1 if @@error <> 0 begin rollback RETURN end UPDATE dbo.DOC_DETT SET DONUMDOC = 26 WHERE DONUMDOC = 0 AND DOCODCLI = 1 if @@error <> 0 begin rollback RETURN end COMMIT TRANSACTION

Ho provato ad aggiornare le tabelle una per volta e mi dà questo errore per esempio se provo ad aggiornare solo DOCMAST (viceversa per doc dett)
Microsoft OLE DB Provider for SQL Server error '80040e2f'
L'istruzione UPDATE ha generato un conflitto con il vincolo TABLE REFERENCE 'FK_DOC_DETT_1' nel database 'RimorInService', tabella 'DOC_DETT'.

Che cosa può essere?????
Aiutooooooo!!!