<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; CHARSET=UTF-8" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18975">
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial>No trabaja en otra transacción, son pruebas que estoy 
realizando antes de empezar un proyecto y solo tengo una 
transacción.</FONT></DIV>
<DIV><FONT face=Arial>Y si verifico que exista una transacción activa, tengo el 
siguiente código. Pero tengo entendido que el grid debe activar la transacción 
ella misma cuando entre en edición.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>procedure Tdm.rsAfterPost(DataSet: 
TDataSet);<BR>begin<BR>  try<BR>    if not tra.Active then 
tra.StartTransaction;<BR>    
rs.ApplyUpdates;<BR>    tra.CommitRetaining;<BR>  except on 
e:exception do<BR>    begin<BR>      
Application.MessageBox(pchar(e.Message), pchar('Error'), 0);<BR>  
  rs.CancelUpdates;<BR>    end;<BR>  
end;<BR>end;<BR></FONT></DIV>
<DIV><FONT face=Arial>La tabla tiene 2 campos idorg y nombre, pero el campo 
idorg le asigno los datos en la capa de datos y tengo un procedimiento 
almacenado que menciono abajo y en el tigger verifico si el valor del campo es 
nulo, lo cual va a ser cierto y le asigno el valor en el mismo, todo esto dentro 
de la capa de datos por lo que es transparente a la aplicación.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Quiero teclear los datos directo en la grilla y al dar 
enter si estoy en la última fila me pase para insertar una nueva, en caso de no 
estar en la última cuando de enter me deje mover el cursor para la próxima. Esto 
es algo en lo que estoy enredado.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Cualquier ayuda será bienvenida.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Saludos cordiales.</DIV></FONT>
<DIV>=========<BR>|| ISMAEL ||<BR>=========</DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="FONT: 10pt arial; BACKGROUND: #e4e4e4; font-color: black"><B>From:</B> 
  <A title=josea@artextrading.com href="mailto:josea@artextrading.com">José 
  Antonio Cuello</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A 
  title=lazarus-es@lists.lazarus.freepascal.org 
  href="mailto:lazarus-es@lists.lazarus.freepascal.org">Spanish version of 
  Lazarus List</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, November 23, 2010 2:33 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [Lazarus-es] Ingresar datos 
  directamente en un grid</DIV>
  <DIV><BR></DIV>Hola, no será que el componente trabaja sobre una transacción y 
  el procedimiento y trigger trabajan sobre otra transaccion? <BR>Una pregunta, 
  abres una transacción antes de ejecutar el post en el 
  TDataset?<BR><BR>Pregunto para hacerme una idea de como puede estar trabajando 
  el insert sobre la base de datos.<BR>Un saludo.<BR>
  <TABLE cellSpacing=0 cellPadding=0 width="100%">
    <TBODY>
    <TR>
      <TD><BR>
        <HR noShade>
        <BR><BR><B><FONT size=2>ARTEX TRADING S.A.</FONT></B><BR><I><FONT 
        size=2>José Antonio Cuello 
    Principal</FONT></I><BR><BR><BR><BR></TD></TR></TBODY></TABLE>El lun, 
  22-11-2010 a las 16:36 -0500, Ismael L. Donis García escribió: 
  <BLOCKQUOTE TYPE="CITE">Estoy tratando que ingresar datos directamente sobre 
    un grid, pero me da error el cual me dice que la llave primaría es requerida 
    pero realmente yo la lleno en el tigger por lo que no debería dar ese error, 
    es más si lo mando a ejecutar en consola funciona perfecto al igual que 
    desde otros lenguajes de programación, solo en Lazarus es donde estoy 
    enredado. </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE"> </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">uso Firebird, TIBConnection, TSQLTransaction, 
    TSQLQuery, TDataSource y TDBGrid </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE"> </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">Tengo las siguientes propiedades: </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">InsertSQL := execute procedure 
    pi_scorg(:NEW_nombre)  </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">DeleteSQL := execute procedure pd_scorg(:OLD_idorg) 
  </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">UpdateSQL := execute procedure pu_scorg(:OLD_idorg, 
    :NEW_nombre) </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE"> </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">El procedimiento pi_scorg como: </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE"> </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">DECLARE VARIABLE INT_ID INTEGER; <BR>BEGIN<BR>  
    /* Procedimiento para agregar los organismos */<BR>  select a.idorg 
    from scorg a where (a.nombre = :vch_nombre) into :int_id;<BR>  if 
    (int_id is null) then<BR>    insert into scorg (nombre) 
    values (:vch_nombre);<BR>  else<BR>    exception 
    e_org_e;<BR>END </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE"> </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">Y un tigger Before Insert como: </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE"> </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">  if (new.idorg is null) 
    then<BR>      new.idorg = gen_id(gen_scorg_id, 
    1);   </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE"> </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">Saludos </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE">=========<BR>|| ISMAEL ||<BR>========= </BLOCKQUOTE>
  <BLOCKQUOTE TYPE="CITE"><PRE>_______________________________________________
Lazarus-es mailing list
<A href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</A>
<A href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</A>
</PRE></BLOCKQUOTE>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>Lazarus-es mailing 
  list<BR>Lazarus-es@lists.lazarus.freepascal.org<BR>http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es<BR></BLOCKQUOTE></BODY></HTML>