Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas para insertar con ADO (https://www.clubdelphi.com/foros/showthread.php?t=29066)

marcoev 11-01-2006 17:48:23

Problemas para insertar con ADO
 
Saludos compañeros, a continuacion expongo mi problema:

lo que pasa es que al momento de hacer una insercion, el datasource cambia a modo dsinsert, pero inmediatamente despues regresa a Browse :mad:, no he encontrado como detectar que es lo que me esta cambiando el estado. pero cuando lo que hago es una edicion el estado se mantenien en dsedit.

lo que me interesa conocer es si alguien tiene algun metodo de depuracion de estos errores, para ver que componente o codigo me esta cambiando los edos.

utilizo:
Delphi 7
Componentes ADO
Bd de Access
Componentes devexpress

fabianbbg 11-01-2006 19:52:06

Hola:

Es raro lo que te pasa.. serias tan amable de pegar el codigo? porque cuando decis :

Cita:

Empezado por marcoev
lo que pasa es que al momento de hacer una insercion, el datasource cambia a modo dsinsert, pero inmediatamente despues regresa a Browse :mad:, no he encontrado como detectar que es lo que me esta cambiando el estado. pero cuando lo que hago es una edicion el estado se mantenien en dsedit.

supongo que te referias al estado del dataset..
En fin, como haces para comenzar la insercion? Llamando a Insert? o por medio de algun control?

Por las dudas haces algo con el dataset cuando estas insertando? como buscar algun dato o algo asi?

Bien.. en una de esas con el código se vislumbra la solucion..
Saludos.. Fabián

marcoev 11-01-2006 20:58:40

primero que nada, gracias por responder el codigo es:

Código Delphi [-]
  Try
    with dmConfigs do
    begin
      If not cnnCoexIni.InTransaction  Then
        cnnCoexIni.BeginTrans;
      tContribuyentes.Append;
    end;
    pageControl.ActivePage:=Datos;
    pCtrl.ActivePage:=tDatos;
    dbClave.SetFocus;
    Controles(False);
  except
    On E: Exception do begin
      Controles(True);
      pageControl.ActivePage:=Consulta;
      tContribuyentes.Cancel;
      with dmConfigs do  begin
        If cnnCoexIni.InTransaction  Then
          cnnCoexIni.RollbackTrans;
      end;
      raise Exception.create('Cont.New: Error al intentar procesar la transaccion, Error: "'+IntToStr(E.HelpContext)+' : '+E.Message+'"')
    end;
  end;

este codigo lo tengo dentro de una Accion, a la cual llamo desde cualquier control, en este caso, la estaba llamando desde un boton de una barra de devexpress, lo mas raro de todo es que si la accion se la asigno a un boton normal, este trabaja de forma correcta. aclaro que el boton de la barra a la que se lo asigno es de uno de esos que viene de forma estandar con las barras de navegacion de bd, no se si esto sea un impedimento para que ejecute mi accion en lugar de la que de seguro viene predefinida; esto se me hace bastante raro tambien porque utilizo la misma barra y opciones en otras formas, y no en todas pasa lo mismo :confused:

Migpal 11-01-2006 20:59:29

Tratando de adivinar un poco, supongo que lo que haces poner la tabla en modo de insercion y los datos los estas capturando directamente en un DBgrid; si es asi, tu tabla cambia de estado cada vez que oprimas las flechas de movimiento sobre la grilla.

marcoev 11-01-2006 21:13:33

gracias por tu respuesta, pero no es asi, lo que tengo es una forma con un grid para la consulta el cual esta dentro de un Pagecontrol con 2 o mas paginas, al dar clic en insertar muestro la siguiente pagina y ahi capturo toda la informacion del registro.

mi problema principal no es que yo quiera controlar el estado de la edicion del dataset, mas que nada es que cuando doy insertar, el estado cambia de insert a browse de forma inmediata en lugar de ponerme un registro en blanco me pone los datos del ultimo registro(por el Append) y en lugar de ingresar un nuevo registro estaria modificando uno existente :eek:, lo que hice para dar una solucion la cual no me gusta, es que cree una variable en la cual indico cuando es o no una insercion, y cuando el control donde lleva la clave recibe el foco, ahi verifico esta variable, si es insercion doy un append, y ahi si funciona... raro no :confused:

fabianbbg 11-01-2006 21:22:33

Hola:

Cita:

Empezado por marcoev
este codigo lo tengo dentro de una Accion, a la cual llamo desde cualquier control, en este caso, la estaba llamando desde un boton de una barra de devexpress, lo mas raro de todo es que si la accion se la asigno a un boton normal, este trabaja de forma correcta.

Bueno.. no conozco la barra que mencionas .. pero si anda bien con otro botón entonces el problema no esta en la función sino en dicha barra, mas precisamente en alguna acción que ejecuta esa barra sobre el Tdataset al que esta relacionado.

Supongo entonces que llamas a la función desde el "onclick" de la barra y además de ejecutar la función cambia el estado a DsBrowse.
Habria que ver entonces como "anular" la acción predeterminada del botón.

marcoev 11-01-2006 21:37:12

pues si, es lo que yo tambien he pensado, lo que he hecho hasta ahora, es quitar la barra y copiarla de otra forma donde no me ha dado problemas, y continuo con el mismo problema, la otra fue borrar el dataset para que se perdieran todas las relaciones, y aun asi siguio el problema... de plano entonces puede que sea error del componente :confused:


La franja horaria es GMT +2. Ahora son las 11:44:10.

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