Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2008
Avatar de Anyu
Anyu Anyu is offline
Miembro
 
Registrado: jun 2008
Posts: 30
Poder: 0
Anyu Va por buen camino
Unhappy No se porque tengo un error cuando intento insertar en la tabla

hola a todos , tengo un pequeño drama con mi tabla TZQuery, sucede lo sgte:
tengo un sistema en delphi y tengo que registrar las remisiones que se hagan en un local, osea que en mi DB tengo una tabla de remision cabecera y remision detalle que debo llenar desde el ABM de remision, al hacer click en el boton de grabar me dice que la tabla remision (TZQuery) no se encuentra en el modo de insertar o editar, ya le di muchas vueltas y estoy segura que ha de ser una estupides, porque en mi DB me guarda los datos que ingero, y cuendo edito alguna nota de remision ya almacenada, tambien me modifica sin problemas, solo que no puedo evitar que me salte ese mensaje, y asi no lo puedo entregar, por favor si me pueden ayudar, porque soy nueva con Delphi y estoy segura que me debo estar saltando algun atributo o algo que debo marcar en true o cosa parecida.

P.D: Adjunto el mensaje de error por ahi se les hace familiar


Desde ya muchas gracias por su ayuda
Archivos Adjuntos
Tipo de Archivo: zip MENSAJE.zip (12,8 KB, 8 visitas)
Responder Con Cita
  #2  
Antiguo 14-07-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 17
Fenareth Va por buen camino
Hola Anyu !

Código Delphi [-]
Remi.Edit;

El mismo error te lo menciona...
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference
Responder Con Cita
  #3  
Antiguo 14-07-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, si vas a insertar datos lo primero que debes hacer es poner el dataset en modo Insert:

Código Delphi [-]
ZQuery1.Insert;
// sentencias codigos
ZQuery1.Post;

Si vas a modificar datos primero debes ponerlo en modo Edit;

Código Delphi [-]
ZQuery1.Edit;
// sentencias codigos
ZQuery1.Post;

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #4  
Antiguo 14-07-2008
Avatar de Anyu
Anyu Anyu is offline
Miembro
 
Registrado: jun 2008
Posts: 30
Poder: 0
Anyu Va por buen camino
Este es el procedimiento que se ejecuta con el boton de agregar para los detalles, en el boton editar formulario, esta el remi.Edit pero en el boton de nuevo formulario tengo remi.append, entonces en lugar de eso tiene que ser remi.insert verdad?, quizas por eso agrega pero me lanza ese error...


procedure Tf_remision2.AgregarClick(Sender: TObject);
var
idremision: integer;
cantidad: real;
begin
if remi.State=dsInsert then
begin
remi.Fields[1].AsInteger:=strtoint(DBComprobante.Text);
remi.Fields[2].AsDateTime:=feini.Date;
remi.Fields[3].AsDateTime:=fefin.Date;
remi.Fields[4].AsString:=DBMotivo.Text;
remi.Fields[5].AsString:=DBRazon.Text;
remi.Fields[6].AsString:=DBRUC.Text;
remi.Fields[7].AsString:=DBDestino.Text;
remi.Fields[8].AsString:=DBPartida.Text;
remi.Fields[9].AsString:=f_menu.nomusu.Text;
remi.Fields[10].AsDateTime:=now();
remi.Fields[11].AsString:=DBLocal.Text;
remi.Fields[12].AsInteger:=strtoint(DBRemision.Text);
remi.Post;
remi.ApplyUpdates;
f_menu.conex.Commit;
remi.Close;
remi.Open;
remi.Last;
end;
if remi.State=dsEdit then
begin
remi.Fields[1].AsInteger:=strtoint(DBComprobante.Text);
remi.Fields[2].AsDateTime:=feini.Date;
remi.Fields[3].AsDateTime:=fefin.Date;
remi.Fields[4].AsString:=DBMotivo.Text;
remi.Fields[5].AsString:=DBRazon.Text;
remi.Fields[6].AsString:=DBRUC.Text;
remi.Fields[7].AsString:=DBDestino.Text;
remi.Fields[8].AsString:=DBPartida.Text;
remi.Fields[9].AsString:=f_menu.nomusu.Text;
remi.Fields[10].AsDateTime:=now();
remi.Fields[11].AsString:=DBLocal.Text;
remi.Post;
remi.ApplyUpdates;
f_menu.conex.Commit;
remi.Close;
remi.Open;
remi.Locate('id_remision',idremision,[]);
end;
des;

try
cantidad:=strtofloat(Cant.Text);
except
cantidad:=0;
end;

if cantidad <= merca.Fields[3].AsInteger then
begin
detalle.Append;
detalle.Fields[1].AsInteger:=remi.Fields[0].AsInteger;
detalle.Fields[3].AsInteger:=merca.Fields[0].AsInteger;
detalle.Fields[2].AsFloat:=strtofloat(cant.Text);
detalle.Post;
detalle.ApplyUpdates;
idremision:=remi.Fields[0].AsInteger;
f_menu.conex.Commit;
remi.Close;
remi.Open;
remi.Locate('id_remision',idremision,[]);
end
else
begin
showmessage('No se agregaron detalles, no hay cantidad suficiente o se modifico la cabecera');
Cant.SetFocus;
end;
abredetalle;

end;
Responder Con Cita
  #5  
Antiguo 14-07-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 17
Fenareth Va por buen camino
Cita:
Empezado por Anyu Ver Mensaje
Este es el procedimiento que se ejecuta con el boton de agregar para los detalles, en el boton editar formulario, esta el remi.Edit pero en el boton de nuevo formulario tengo remi.append, entonces en lugar de eso tiene que ser remi.insert verdad?, quizas por eso agrega pero me lanza ese error...


Código Delphi [-]
procedure Tf_remision2.AgregarClick(Sender: TObject);
var
idremision: integer;
cantidad: real;
begin
  if remi.State=dsInsert then
  begin
        remi.Fields[1].AsInteger:=strtoint(DBComprobante.Text);
        remi.Fields[2].AsDateTime:=feini.Date;
        remi.Fields[3].AsDateTime:=fefin.Date;
        remi.Fields[4].AsString:=DBMotivo.Text;
        remi.Fields[5].AsString:=DBRazon.Text;
        remi.Fields[6].AsString:=DBRUC.Text;
        remi.Fields[7].AsString:=DBDestino.Text;
        remi.Fields[8].AsString:=DBPartida.Text;
        remi.Fields[9].AsString:=f_menu.nomusu.Text;
        remi.Fields[10].AsDateTime:=now();
        remi.Fields[11].AsString:=DBLocal.Text;
        remi.Fields[12].AsInteger:=strtoint(DBRemision.Text);
        remi.Post;
        remi.ApplyUpdates;
        f_menu.conex.Commit;
        remi.Close;
        remi.Open;
        remi.Last;
  end;
  if remi.State=dsEdit then
  begin
        remi.Fields[1].AsInteger:=strtoint(DBComprobante.Text);
        remi.Fields[2].AsDateTime:=feini.Date;
        remi.Fields[3].AsDateTime:=fefin.Date;
        remi.Fields[4].AsString:=DBMotivo.Text;
        remi.Fields[5].AsString:=DBRazon.Text;
        remi.Fields[6].AsString:=DBRUC.Text;
        remi.Fields[7].AsString:=DBDestino.Text;
        remi.Fields[8].AsString:=DBPartida.Text;
        remi.Fields[9].AsString:=f_menu.nomusu.Text;
        remi.Fields[10].AsDateTime:=now();
        remi.Fields[11].AsString:=DBLocal.Text;
        remi.Post;
        remi.ApplyUpdates;
        f_menu.conex.Commit;
        remi.Close;
        remi.Open;
        remi.Locate('id_remision',idremision,[]);
  end;
  des;

  try
        cantidad:=strtofloat(Cant.Text);
  except
        cantidad:=0;
  end;

  if cantidad <= merca.Fields[3].AsInteger then
  begin
   detalle.Append;
   detalle.Fields[1].AsInteger:=remi.Fields[0].AsInteger;
   detalle.Fields[3].AsInteger:=merca.Fields[0].AsInteger;
   detalle.Fields[2].AsFloat:=strtofloat(cant.Text);
   detalle.Post;
   detalle.ApplyUpdates;
   idremision:=remi.Fields[0].AsInteger;
   f_menu.conex.Commit;
   remi.Close;
   remi.Open;
   remi.Locate('id_remision',idremision,[]);
   end
else
   begin
   showmessage('No se agregaron detalles, no hay cantidad suficiente o se modifico la cabecera');
   Cant.SetFocus;
   end;
   abredetalle;

end;
Se ve más bonito ... intenta ese cambio y nos platicas
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference
Responder Con Cita
  #6  
Antiguo 14-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola, tambien sirve...

Código Delphi [-]
 
if remi.state <> dsBrowse...
...
if not remi.state = dsEdit then remi.Fields[12].AsInteger:=strtoint(DBRemision.Text);
...
mas que nada para no repetir el mismo codigo.

Última edición por coso fecha: 14-07-2008 a las 22:43:00.
Responder Con Cita
  #7  
Antiguo 15-07-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Anyu Ver Mensaje
Este es el procedimiento que se ejecuta con el boton de agregar para los detalles, en el boton editar formulario, esta el remi.Edit pero en el boton de nuevo formulario tengo remi.append, entonces en lugar de eso tiene que ser remi.insert verdad?, quizas por eso agrega pero me lanza ese error...
Hola Anyu, puedes añadir registros con Insert o Append ese no es el error, la diferencia entre uno y otro es: con Append registramos al final de los registros ya existentes y con Insert registramos delante del registro actual.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 15-07-2008
Avatar de Anyu
Anyu Anyu is offline
Miembro
 
Registrado: jun 2008
Posts: 30
Poder: 0
Anyu Va por buen camino
Smile Rw:

ya lo pude resolver gracias a todos y saludos
Responder Con Cita
  #9  
Antiguo 15-07-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 17
Fenareth Va por buen camino
Cita:
Empezado por Anyu Ver Mensaje
ya lo pude resolver gracias a todos y saludos
Y porqué no nos dices cómo y sirve que todos aprendemos ?
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference
Responder Con Cita
  #10  
Antiguo 15-07-2008
Avatar de Anyu
Anyu Anyu is offline
Miembro
 
Registrado: jun 2008
Posts: 30
Poder: 0
Anyu Va por buen camino
Talking

jajaja, lo que sucede es que le meti tanta.... mano que ya nose cual de todos fue la solucion jajaja, pero fue algo que deje pasar por desantenta, una variable que no fue inicializada:
mi idremision fue declarado como un integer, pero no lo inicialize en el caso de que mi DBGrid Remi este en remi.edit, y otro error fue que necesitaba de otro campo mas en mi tabla para poder manippularlo que era el nro de nota de remision ya que el id era un generador autoincrementable, y otras cositas, ak y alla, si les interesa les paso el código sin ningun problema, solo que no se si les sirva, si lo quieren lo paso mañana bien comentado porque ahora ya estoy de salida del laburo... tengo que ir a la facu...

saludos y besos
Responder Con Cita
  #11  
Antiguo 15-07-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
clásico...ya lo resolví pero averigüen como lo hice..chaaaaleeeee.

El conocido error de querer crear las tablas hijas cuando aún no ha sido creada la tabla maestra y por lo tanto no tenemos clave principal para identificar. Ahí se los paso el semestre que entra cuando me acuerde de ustedes loosers....jajjajaja


Que mal plan no?
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #12  
Antiguo 15-07-2008
Avatar de Anyu
Anyu Anyu is offline
Miembro
 
Registrado: jun 2008
Posts: 30
Poder: 0
Anyu Va por buen camino
jajaja AzidRain, ese no fue mi error.... fue algo más estupido aun, porque la tabla cabecera y el detalle estaban ambos bien creados, e insertaba correctamente, solo que ese error que adjunte en un pricipio me saltaba igual, aun estando mi TZQuery en .append para el nuevo registro y .edit para editar uno ya existente, lo que se me paso por alto por desatenta fue inicializar mi idremision(variable local), en la segunda consulta de mi "if remi.state = dsEdit ..." y por eso insertaba sin problema pero las modificaciones solo lo hacia en el primer registro insertado al principio de la tabla.... esas son cosas que uno ve al dia sgte recien, despues de haber consultado a la almohada jaja
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error en el ApplyUpdates cuando tengo LEFT JOINS en el command text intelectoall Conexión con bases de datos 1 27-08-2007 13:39:04
Intento insertar y/o editar en un DBGrid y no me permite. joal Conexión con bases de datos 2 05-04-2007 18:17:59
Error cuando actualizo una tabla en SQL liborio Conexión con bases de datos 1 10-01-2007 19:52:03
Insertar datos cuando una tabla tiene col con identity La__X SQL 10 21-01-2006 00:27:23


La franja horaria es GMT +2. Ahora son las 14:13:41.


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
Copyright 1996-2007 Club Delphi