Ok, ho trovato il tempo per risponderti.
In effetti ci sono un paio di errori:
> // Apro la connessione a SQL e comincio la transazione
> OleDbCommand SqlComm = SqlConn.CreateCommand();
> OleDbTransaction oTrans = SqlConn.BeginTransaction();
> SqlComm.Transaction = oTrans;
Qui crei una transazione e la assegni ad un comando che non usi mai. La transazione va creata da una connessione unica (esistente solo per quella transazione) ed assegnata al comando che deve essere contenuto in quella transazione
quindi:
//Cancello prima tutti i record relativi alla macchina in esame
OleDbCommand DeleteRows = SqlConn.CreateCommand();
string strDel = "";
strDel = "DELETE FROM ";
strDel += this.Config.InsertQuery.ToString();
strDel += " WHERE PCNUMBER='" + this.Config.Machine + "'";
//QUI!!!!!
DeleteRows.Transaction=oTrans;
DeleteRows.CommandText = strDel;
DeleteRows.ExecuteNonQuery();
...
oTrans.Commit();
L'altro errore è che mantieni la connessione aperta (dopo l'update) sperando di poter allacciare una nuova transazione. Devi chiuderla e poi riaprirla tipo:
SqlConn.Close();
SqlConn.Open();
o al massimo creane un'altra..
Tutto qui. Un'ultima cosa, utilizza il costrutto Try Catch per gestire commit e rollback della transazione.
Ciao!
fammi sapere..
Alx81 =)
http://blogs.dotnethell.it/suxstellino