Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-01-2008
miss flakita miss flakita is offline
Miembro
 
Registrado: ene 2008
Posts: 14
Poder: 0
miss flakita Va por buen camino
Modificando la base de datos a traves de un Datagrid

Hola a todos!!! oigan alguien podria decirme como puedo modificar los renglones de un dbgrid cuando este esta haciendo relacion a una tabla de la base de datos?

Es decir, en la base de datos tengo dos tablas las cuales componen lo ke es una factura (encabezado y detalles), pero cuando se esta ejecutando el programa y registran una factura, cuando se quiere modificar uno de los renglones del dbgrid (ke hace relacion a la tabla de detalles) me marca un error, por lo que truena el sistema....

Estoy trabajando con los eventos de las tablas....
gracias por su ayuda....
Responder Con Cita
  #2  
Antiguo 30-01-2008
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola.
Entiendo que el dbgrid está enlazado a la tabla de lineas de factura, ¿no?

¿Que error te da en concreto?
¿Qué versión de delphi usas?
¿Qué componentes de acceso a bases de datos de delphi usas?
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #3  
Antiguo 30-01-2008
Wiarbumu Wiarbumu is offline
Miembro
 
Registrado: ene 2008
Posts: 15
Poder: 0
Wiarbumu Va por buen camino
revisa

Supongo que el problema es causado por la integridad referencial, por lo que un registro de detalles necesita su registro maestro en la tabla de facturas, por lo tanto cada que intentas hacer un post en detalles este no encuentra el registro maestro; si este es el problema podrías intentar hacer un post sobre la tabla de facturas antes de empezar a llenar la tabla de detalles.

Aunque habría que mirar el esenario en el que estás trabajando (motor, base de datos, aplicación monousuario o multiusuario, etc) para poder precisar mejor la solución como por ejemplo utilizar un TClientDataset, o hacer algo con un procedimiento almacenado si la DB lo permite, etc.

Saludos
Responder Con Cita
  #4  
Antiguo 30-01-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Hola miss flakita, la tabla que intentas modificar en el DataGrid esta en modo de edicion...?

Código Delphi [-]
tabla.open;
tabla.edit

De no ser asi recuerda que debes hacerlo para poder modificarlo, tampoco te olvides de hacer post y en dependiendo de como te conectas el ApplyUpdates; si es necesario como trabajas con los eventos de las tablas debes jugar con ello para evitar errores de integridad con el encabezado

Saludos
__________________
Web
Responder Con Cita
  #5  
Antiguo 30-01-2008
miss flakita miss flakita is offline
Miembro
 
Registrado: ene 2008
Posts: 14
Poder: 0
miss flakita Va por buen camino
Buenos dias chicos!! miren mi situacion es la siguiente....

Antes de guardar en la tabla de detalles ya he guardado en la de encabezado por lo que de la integridad no tengo problema, mi problema es.... una vez que el usuario registro los productos a comprar en el dbgrid y antes de guardar se da cuenta que por ejemplo en el renglon tres del dbgrid se equivoco en la cantidad o el articulo a comprar y tiene que modificarlo, una vez que lo hace ahora si va a guardar la factura y es ahi donde me marca el error....
Responder Con Cita
  #6  
Antiguo 30-01-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola miss flakita,
¿Podrías aportarnos mayores detalles?¿Que error?¿Podrías escribirnoslo?

No es que sea malo miss flakita, es simplemente que en estas situaciones lamentablemente debemos pedir mayor predisposición de quien pregunta.
Si no te han dado la bienvenida a los foros, te la doy ahora: Bienvenida!. Te informo sobre la guia de estilo. No es que pidamos demasiado y seamos tan exigentes...
Pero si pudieramos conocer tu código y el error (por lo menos) podríamos serte de más ayuda.

Espero que tomes bien estas palabras y que te sientas a gusto de seguir en esta comunidad.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 30-01-2008
miss flakita miss flakita is offline
Miembro
 
Registrado: ene 2008
Posts: 14
Poder: 0
miss flakita Va por buen camino
Gracias Delphius muy amable de hecho si me dieron la guia peroooo no tengo chansilla de leerla, eje...

Bueno mira estoy trabajando con interbase en monousuario y en los eventos de las tablas tengo lo siguiente:

tabla del encabezado
After Post
if (datos.TBLORDENCOMPRA.State=DsEdit) then
begin
datos.TBLORDENCOMPRASUBTOTAL.Value:=datos.TBLORDENCOMPRASUBTOTAL.Value+importe;
datos.TBLORDENCOMPRATOTAL.value:=datos.TBLORDENCOMPRASUBTOTAL.value*0.15;
datos.TBLORDENCOMPRA.post;
datos.TBLORDENCOMPRA.refresh;
end;
// calculo importes y totales

OnnewRecord
cont:=0;
renglones:=1;
datos.TBLORDENCOMPRASUBTOTAL.Value:=0;
datos.TBLORDENCOMPRATOTAL.Value:=0;
importe:=0;
//inicializo variables

en la tabla de detalles....
After post
ren:=datos.tordenDetallesNDETALLES.value;
DATOS.TBLFOLIOS.Edit;
datos.TBLFOLIOSFOLIO.Value:=ren;
DATOS.TBLFOLIOS.Post;
datos.TBLFOLIOS.Refresh;
cont:=cont+1;
// tengo el contador para el control de los renglones del dbgrid, ke por cierto sale un error medio extraño aqui. Ademas de controlo los folios

Before Post
if cont=6 then
begin
datos.tordenDetalles.cancel;
error();
end else
if (datos.tordenDetalles.State=dsinsert)then
begin
datos.tordenDetallesIMPORTE.value:=datos.tordenDetallesCANTIDAD.value*datos.tordenDetallesPU.Value;
importe:=datos.tordenDetallesIMPORTE.value;
renglones:=renglones+1;
datos.TBLORDENCOMPRA.Edit;
datos.TBLORDENCOMPRASUBTOTAL.value:=datos.tordenDetallesIMPORTE.Value+datos.TBLORDENCOMPRASUBTOTAL.v alue;
datos.TBLORDENCOMPRAIVA.value:=datos.TBLORDENCOMPRASUBTOTAL.Value*0.15;
datos.TBLORDENCOMPRATOTAL.Value:=datos.TBLORDENCOMPRASUBTOTAL.value+datos.TBLORDENCOMPRAIVA.value;
end;

y fnalmente OnNewRecord
if (datos.tordenDetalles.eof) then
begin
datos.tordenDetallesRENGLONES.Value:=renglones;
ren:=datos.TBLFOLIOSFOLIO.VALUE;
datos.tordenDetallesNDETALLES.value:=ren+1;
datos.REL_UN_OCNORDEN.Value:=datos.TBLORDENCOMPRANORDEN.Value;
datos.REL_EMP_OCNORDEN.Value:=datos.TBLORDENCOMPRANORDEN.Value;
datos.REL_UN_OCNRENGLON.Value:=renglones;
datos.REL_EMP_OCNCARgo.Value:=renglones;
end;
if ((datos.tordenDetallesCANTIDAD.value=0)or (datos.tordenDetallesCANTIDAD.IsNull=true))then
begin
datos.tordenDetallesCANTIDAD.value:=1;
end;
if ((datos.tordenDetallesPU.value=0)or(datos.tordenDetallesPU.IsNull=true))then
begin
datos.tordenDetallesPU.Value:=1;
end;

y el error ke me sale al tratar de modificar uno de los renglones del dbgrid ke esta relacionado con la tabla detalles es:

Proyect LAPIMI.exe raised Exception class EDataBaseError with message 'Tordendetalles: Dataset not in Edit or Insert mode'
Responder Con Cita
  #8  
Antiguo 30-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Proyect LAPIMI.exe raised Exception class EDataBaseError with message 'Tordendetalles: Dataset not in Edit or Insert mode'
Saludos
Responder Con Cita
  #9  
Antiguo 30-01-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Miss flakita, Caral ya dio una buena pista. Lee lo subrayado en negrita.

El error se debe a que no pusiste en modo de edición el Tordendetalles.

Código Delphi [-]
Tordendetalles.Edit;

Puedes descanzar un poco y despreocuparte. Es un error muy común... un pequeño despiste.

Por otro lado sugiero que te acostumbres a usar las etiquetas delphi.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 30-01-2008
miss flakita miss flakita is offline
Miembro
 
Registrado: ene 2008
Posts: 14
Poder: 0
miss flakita Va por buen camino
Pues es que ya hice eso, pero en un boton despues de que el usuario ha terminado de ingresar los articulos al dbgrid, pero aun asi me sale el error.... a menos que prepare la tabla para edicion en otro lugar.....
Responder Con Cita
  #11  
Antiguo 30-01-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Bueno ya que sabes esto deberias fijarte si es que antes en otra parte cierras la tabla, y verificar que la tabla este abierta y en modo de edicion antes de ejecutar el resto de codigo que expones, me imagino que tendras un boton aceptar o algo por el estilo con el que guardaras los datos finalmente...
__________________
Web
Responder Con Cita
  #12  
Antiguo 30-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Para mi hay mucho evento after y before post, esto enreda el sistema.
No se sabe exactamente el proceso que sigue.
Me parece que el problema ademas de ahi, esta en que nunca se edita la tabla adecuada, salvo en el evento before post, lo que hace que el sistema no lo entienda.
Solucion simple, un dbnavigator y hacer la prueba.
Saludos
Responder Con Cita
  #13  
Antiguo 30-01-2008
miss flakita miss flakita is offline
Miembro
 
Registrado: ene 2008
Posts: 14
Poder: 0
miss flakita Va por buen camino
Tu solucion simple no resulto caral....
Responder Con Cita
  #14  
Antiguo 30-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno miss flakita, como dicen una de cal y una de arena.
Si tienes un dbgrid conectado a datasource y este a un query, ademas tienes un dbnavigator conectado a un datasource, de que funciona, funciona.
Hay alguno que otro ejemplito por aqui, revisalos
Creo que por los foros hay alguna aplicación completa de facturación y creo que en el ftp del club hay una también, curiosamente funcionan.
Saludos Flakita
Responder Con Cita
  #15  
Antiguo 30-01-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por miss flakita Ver Mensaje
Tu solucion simple no resulto caral....
Código Delphi [-]
//tabla del encabezado
//After Post
if (datos.TBLORDENCOMPRA.State=DsEdit) then begin
   datos.TBLORDENCOMPRASUBTOTAL.Value := datos.TBLORDENCOMPRASUBTOTAL.Value+importe;
   datos.TBLORDENCOMPRATOTAL.value := datos.TBLORDENCOMPRASUBTOTAL.value*0.15;  
   datos.TBLORDENCOMPRA.post;
   datos.TBLORDENCOMPRA.refresh;
end;
// calculo importes y totales

Me parece que esto esta mal, no debe ser en el evento BeforePost aunque tampoco nos dices de que tabla es ese evento, bueno, como no se como es la estructura de tu programa no me atrevo a asegurarlo, por otro lado que pasa si al tabla TBLORDENCOMPRA no esta en modo de edición?

En fin, creo que faltan muchos datos para dar con el problema.

Por cierto, ves como se ve diferente el código con las etiquetas?, te sugiero que si no has tenido una chansilla para leer la guía por lo menos edites tu post y pongas las etiquetas a tu código para que se vea mas claro.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #16  
Antiguo 30-01-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por egostar Ver Mensaje
Por cierto, ves como se ve diferente el código con las etiquetas?, te sugiero que si no has tenido una chansilla para leer la guía por lo menos edites tu post y pongas las etiquetas a tu código para que se vea mas claro.

Salud OS
Muy cierto Egostar, yo preferí evitar hacerle un comentario más sobre el asunto. La verdad es que a mi no me ha gustado la manera en que lo dijo miss flakita, pero para evitarme lios preferí aguantarmela y pedirle de la mejor manera que use las etiquetas.

Y bueno, después de haber leído el modo en que se dirigió a Caral... me ha quedado peor gusto de la situación.

Como fui yo quien le sugirió a miss flakita que lea la guia, seré yo ahora quien le pida nuevamente que sepa respetar la guia y mejore el trato hacia a quienes se ofrecieron a ayudar en el problema.

Doy por concluído el tema aquí.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #17  
Antiguo 01-02-2008
miss flakita miss flakita is offline
Miembro
 
Registrado: ene 2008
Posts: 14
Poder: 0
miss flakita Va por buen camino
Gracias chicos les agradezco su ayuda, ya solucione mi problema sola, y en cuanto a la guia de estilossssss, si no la he leido es porke talves tenga mas ocupaciones que ustedes, porque a parte de trabajar mas de 8 horas diarias tengo que terminar mi proyecto de residencias y como comprenderan su guia de estilos tiene demasiadas letras que el leerla me llevaria tiempo desperdiciado que podria aprovechar en otras cosas... pero disculpen estan en su derecho ya que es su foro y se estan mostrando demasiado exigentes y groseros con quienes vamos entrando al foro....

De todos modos les agradezco su ayuda...
Que tengan bonito dia...

Me dio gusto entrar a su foro pero talves no vuelva hacerlo....
saludos
Responder Con Cita
  #18  
Antiguo 01-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por miss flakita Ver Mensaje
y en cuanto a la guia de estilossssss, si no la he leido es porke talves tenga mas ocupaciones que ustedes,
Claro, el club es para gente que no tiene tiempo de hacer SUS cosas y vieras que somos muy felices de responder y hacer el trabajo de otros !!

Cita:
Empezado por miss flakita Ver Mensaje
porque a parte de trabajar mas de 8 horas diarias tengo que terminar mi proyecto de residencias y como comprenderan su guia de estilos tiene demasiadas letras que el leerla me llevaria tiempo desperdiciado que podria aprovechar en otras cosas...
Tienes toda la razón, que desconsiderados son con personas como tú que tienen tantas actividades y no pueden perder el tiempo en tonterías, es mas voy a sugerir en el foro premium (tengo muchas influencias ahí ) para que eliminen esa odiosa guia.

Cita:
Empezado por miss flakita Ver Mensaje
pero disculpen estan en su derecho ya que es su foro y se estan mostrando demasiado exigentes y groseros con quienes vamos entrando al foro....
Disculpada estas, nuestro administrador tomará las medidas necesarias para reprender a esos gañanes tan exigentes y groseros, tal vez no los vuelvas a ver por aquí, tú mereces toda la atención del foro, faltaba mas.

Cita:
Empezado por miss flakita Ver Mensaje
Me dio gusto entrar a su foro pero talves no vuelva hacerlo....
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
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
conectarse a una base de datos a traves de internet andressanchez Firebird e Interbase 3 28-12-2006 10:07:09
bases de datos a través de la red royrogers84 Varios 1 01-12-2006 17:32:09
Leer datos a traves del COM1 Sr.Scorpion Varios 2 31-05-2005 19:47:25
¿Como puedo mandar Datos a traves del Socket? juliopag1 Internet 1 23-04-2004 14:44:05
Capturar datos que llegan a traves de cable de red txeka Varios 3 26-08-2003 18:30:48


La franja horaria es GMT +2. Ahora son las 02:52:34.


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