problemas en una operacion de insercion una db
hola amigos les escribo porque al insertar un nuevo registro se produce el siguiente errorProject Creditos.exe raised exception class EOleException with message "No se pudo iniciar la transaccion;ya hay demasiadas transacciones anidadas'. process stopped. Use Step or Run to continue.amigos porfavor ayuda
|
MMMH,
no nos dice (bueno a mi) mucho la explicacion de tu problema: lo que deduzco es que posiblemente sea SQL Server por el mensaje en español, trata de decirnos como lo haces, es un un simple insert, o el insert esta en un procedimiento almacenado en la base de datos, quizas hagas un WHILE y dentro del cupero del While, abras la trasaccion y otra vez la abras y otra vez.... no sè, no sè cuentanos más por fvor |
grasias por responder tan rapido, bueno la base de datos que estoy usando es access, el proceso que uso para insertar es.//*** INSERTAR UNA VENTAfunction Insertar(cn:TADOConnection; var Error:String;NroCredito:string; IDCliente:string;Cuenta:string; Monto:string; TipoDoc:String;SerieDoc:string;NroDoc:String;Fecha:string; Cancelado:string;Contabilidad:string; Almacen:string;Fiscal:string;Responsable:string;Grid:TStringGrid):Boolean;var Retorno:boolean; cm : TADOCommand; i:integer;Begin Try Retorno:=True; cn.BeginTrans; /// cm := TADOCommand.Create(nil); cm.Connection := cn; // INSERTAR CABECERA DEL CREDITO cm.CommandText := ' INSERT INTO TCREDITO VALUES ('+ (NroCredito)+','+ QuotedStr(IDCliente)+','+ QuotedStr(Cuenta)+','+ Monto+','+ QuotedStr(TipoDoc)+','+ QuotedStr(SerieDoc)+','+ QuotedStr(NroDoc)+','+ QuotedStr(Fecha)+','+ QuotedStr(Cancelado)+','+ QuotedStr(Contabilidad)+','+ QuotedStr(Almacen)+','+ QuotedStr(Fiscal)+','+ QuotedStr(Responsable)+')'; cm.Execute;""ESTA ES LA LINAR DONDE SEPRODUCE EL ERRORR"" // INSERTAR DETALLE DEL CREDITO for i := 1 To Grid.RowCount-2 do begin cm.Connection := cn; cm.CommandText := ' INSERT INTO TDETALLECREDITO VALUES ('+ (NroCredito)+','+ QuotedStr(grid.cells[1,i])+','+ (grid.cells[0,i])+','+ QuotedStr(grid.cells[2,i])+','+ (grid.cells[3,i])+','+ (grid.cells[4,i])+','+ (grid.cells[5,i])+')'; cm.Execute; end; cn.CommitTrans; except on E : Exception do begin Error:=E.Message; cn.RollbackTrans; Retorno:=False; end; end; Insertar:=Retorno;End;amigos una cosa mas la base de datos se a reducido de tamaño, no se porque, pero no es perdido registros, bueno antes era de 80 mb pero ahora es de 5
|
Tenemos un sancocho aquí :eek:
alfil123, trata de arreglar tu código porque no se entiende nada de nada. Siempre que envies un mensaje revisalo! Asi no sucederá esto |
amigos perdon por el desastre,
grasias por responder tan rapido, bueno la base de datos que estoy usando es access, el proceso que uso para insertar es.
amigos una cosa mas la base de datos se a reducido de tamaño, no se porque, pero no es perdido registros, bueno antes era de 80 mb pero ahora es de 5 |
amigos en la linea cm.Execute;, se dispara este error con un dll "Access violation at addres 1B015CB5 in module 'msjet40.dll'" 015064D2 'msado15.dll'var Retorno:boolean; cm : TADOCommand; i:integer;Begin Try Retorno:=True; cn.BeginTrans; /// cm := TADOCommand.Create(nil); cm.Connection := cn; // INSERTAR CABECERA DEL CREDITO cm.CommandText := ' INSERT INTO TCREDITO VALUES ('+ (NroCredito)+','+ QuotedStr(IDCliente)+','+ QuotedStr(Cuenta)+','+ Monto+','+ QuotedStr(TipoDoc)+','+ QuotedStr(SerieDoc)+','+ QuotedStr(NroDoc)+','+ QuotedStr(Fecha)+','+ QuotedStr(Cancelado)+','+ QuotedStr(Contabilidad)+','+ QuotedStr(Almacen)+','+ QuotedStr(Fiscal)+','+ QuotedStr(Responsable)+')'; cm.Execute;
|
alfil, no puedes concatenar una cadena de texto y una variable numerica, lo que haces con nroCredito, y monto es esto:
nroCredito := 123456 'values (' + nroCredito + ',' + ect ect no es posible esto, debes de conertir a cadena de texto la variable para pdoer concatenarla, ojo no debes agregarle comillas. 'values (' + inttoStr(nroCredito) + ',' ect ect o 'values (' + floattoStr(nroCredito) + ',' ect ect ojala sea eso. trata antes de ejecutar tu consulta, ponerla en una etiqueta o en algo donde peudas visualizarla: ejemplo:
|
La franja horaria es GMT +2. Ahora son las 23:17:07. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi