Esta es otra forma de realizar procesos transaccionales utilizando componentes COM sin tener que registrar archivos por diario, nota esto me funciona con SQL Server, puedes probar con el 400 a ver que pasa
Saludes
Hector Arias A.
Imports
System.EnterpriseServicesImports
System.Windows.FormsImports
System.Data.SqlClient<Transaction(TransactionOption.Required)> _
Public
Class clsTrans1 Inherits ServicedComponent Public Sub EjecutaTransaccion(ByVal SQL1 As String, ByVal SQL2 As String) Dim d As New clsTrans2()If HolaTr1(SQL1) And d.HolaTr2(SQL2) Then
ContextUtil.SetComplete()
ElseContextUtil.SetAbort()
End If End SubPublic Function HolaTr1(ByVal SQL As String) As Boolean Dim conn As New SqlConnection("data source=A3S11 localhost;Initial Catalog=northwind; uid =sa;pwd =")
MessageBox.Show("insertando en Tr1")
Dim comm As New SqlCommand(SQL, conn)conn.Open()
Trycomm.ExecuteNonQuery()
ContextUtil.SetComplete()
'd.Dispose() Catch ex As ExceptionMessageBox.Show("en 1: " & ex.Message)
ContextUtil.SetAbort()
Return False Finally If conn.State <> ConnectionState.Closed Thenconn.Close()
End If End Try Return True End FunctionEnd
Class<Transaction(TransactionOption.Required)> _
Public
Class clsTrans2 Inherits ServicedComponent Public Function HolaTr2(ByVal SQL As String) As Boolean Dim conn As New SqlConnection("data source=A3S11 localhost;Initial Catalog=northwind; uid =sa;pwd =")MessageBox.Show("insertando Tr2")
Dim comm As New SqlCommand(SQL, conn)conn.Open()
Trycomm.ExecuteNonQuery()
ContextUtil.SetComplete()
Catch ex As ExceptionMessageBox.Show("en 2: " & ex.Message)
ContextUtil.SetAbort()
Return False Finally If conn.State <> ConnectionState.Closed Thenconn.Close()
End If End Try Return True End FunctionEnd
Class[EMAIL PROTECTED] wrote:
Alguien esta usando OLEDB para conectarse al AS400. Os cuento, estamos accediendo
por OLEDB con .NET a la base de datos correctamente. Pero el problema lo tenemos con
las transacciones que no las esta ejecutando o deshaciendo tanto en el ROLLBACK como
con el COMMIT.
No se si el problema esta en la conexi�n o con alg�n par�metro que no tenemos definido
correctamente el As400 (tenemos v5.2).
Las cadenas de conexi�n son -->
PRIMERA
cn.ConnectionString="Provider=IBMDA400;Autocommit=0;Data Source=RECORDDE.recordrentacar.net;User id=PERE;Password=elpere;";
SEGUNDO
cn.ConnectionString="Provider=IBMDA400.DataSource.1;Persist Security Info=False;User ID=PERE;Password=elpere;Data Source=RECORDDE;Protection Level=None;Extended Properties='';Initial Catalog=RECORDDE;Transport Product=Client Access;SSL=DEFAULT;Force Translate=65535;Default Collection=PERE;Convert Date Time To Char=TRUE;Catalog Library List=RECFSQL;Cursor Sensitivity=3";
Si os sirve tb de referencia este es un ejemplo TRANSACCI�N
private void Button1_Click(object sender, System.EventArgs e)
{
//iniciamos la conexion
cn.ConnectionString="Provider=IBMDA400;Autocommit=0;Data Source=RECORDDE.recordrentacar.net;User id=PERE;Password=elpere;"; cn.Open();
//Creamos transaccion y comando
System.Data.OleDb.OleDbCommand cmd = new OleDbCommand();
System.Data.OleDb.OleDbTransaction transaccion;
//iniciamos la transaccion
transaccion = cn.BeginTransaction();
try
{
string strSQL = "INSERT INTO RECFSQL.AUT_SIS" +
"(SISTEMA_ID, SISTEMA) " +
" VALUES ('"+TextBox1.Text+"','prueba')";
//Asignamos Conexion, SQL y transaccion
cmd.Connection = cn;
cmd.CommandText = strSQL;
 ! ; cmd.Transaction = transaccion;
//Realizamos la inserci�n
int kk = (int)cmd.ExecuteNonQuery();
throw new Exception();
//finalizamos la transaccion
transaccion.Commit();
}
catch (Exception err)
{
! Response.Write("ERROR-->" + err.Message);
transaccion.Rollback();
Response.Write("<BR> ha ejectuado el ROLLBACK");
}
cn.Close();
}
! }
Gracias NET.
=======================================================
La originalidad no esta en el "HECHO", esta en la"SOLUCI�N"
=======================================================
.~.
/V\ L I N U X
// \\ >Phear the Penguin<
/( )\
^^-^^
Pon un Pinguino en TU VIDA.COM
Pere Soria
Dpto. de Inform�tica
Telf. +34 964343008
E-mail: [EMAIL PROTECTED]
http://www.recordrentacar.com
Record Rent a Car S.A.
| ��� Antivirus �
Filtros antispam � 6 MB gratis ��� �Todav�a no tienes un correo inteligente? |
