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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-01-2004
mickey mickey is offline
Registrado
 
Registrado: ene 2004
Posts: 9
Poder: 0
mickey Va por buen camino
Unhappy Como extraer datos de un DBgrid a otro DBgrid

Hola delphines, a ver si pueden ayudarme con esto.!!

Tengo 3 tablas en un mismo form las cuales son llamadas FACTURAH(H = header), FACTURAD(D= detail) y CLIENTE....gueno, la tabla FACTURAD que contiene los campos (codigo, codigo_producto, cantidad, total, etc...) la tengo conectada a un DBgrid, mi pregunta es la siguiente......

Como puedo desde ese DBgrid abrir otro form que tendra por ende otro DBgrid(lo cual sé hacer, programado en el evento OnDblClick o OnClik del DBgrid) extraer los valores de los campos que me interesan dando doble click, por ejemplo, CODIGO_PRODUCTO, que estara en el otro form tambien, VALOR y cualquiera de los demas campos......tengo una idea bana, pero si pueden por favor ayudenme, puesto que con esto no me funciona....

procedure TProducto_factura.DBGrid1DblClick(Sender: TObject);
begin
Refigerio.TfacturadCODIGO_PRO.Value := Table1ID_PRODUCTO.Value;
Producto_factura.Close;
end;


Pero cuando hago esto no me envia ningun valor al form de donde llamo a este (llamado PRODUCTO_FACTURA).

Alguna documentacion por ahi que pueda leer sobre esto....??

Gracias anticipadas!!
Responder Con Cita
  #2  
Antiguo 27-01-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.076
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
¿Qué no hace falta anteponer Producto_factura. a Table1ID_PRODUCTO.Value?

// Saludos
Responder Con Cita
  #3  
Antiguo 28-01-2004
mickey mickey is offline
Registrado
 
Registrado: ene 2004
Posts: 9
Poder: 0
mickey Va por buen camino
Unhappy

Hola roman!

Gracias por responder tan rapido.....lo que pasa es que

table1ID_PRODUCTO.Value
esta en el form local, que es de donde quiero extraer la data!!!....

alguna otra observación??

Gracias anticipadas
Responder Con Cita
  #4  
Antiguo 28-01-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.076
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Cita:
Empezado por mickey
table1ID_PRODUCTO.Value
esta en el form local, que es de donde quiero extraer la data!!!....
Bueno, yo preguntaba por que dices que el segundo formulario lo abres para tomar datos de su grid. Si está también en el primer formulario entonces no entiendo de dónde tomas el dato.

¿Podrías aclarar?

// Saludos
Responder Con Cita
  #5  
Antiguo 28-01-2004
mickey mickey is offline
Registrado
 
Registrado: ene 2004
Posts: 9
Poder: 0
mickey Va por buen camino
Wink

Claro roman!

el codigo anterior esta en el segundo formulario de donde quiero extraer los datos y pasarlos al primer formulario que seria REFIGERIO, como sabras mucho mas que yo, ese es el evento DblClick, para cuando yo seleccione una celda, entonces en esta parte

procedure TProducto_factura.DBGrid1DblClick(Sender: TObject);
begin
Refigerio.TfacturadCODIGO_PRO.Value := Table1ID_PRODUCTO.Value;
Producto_factura.Close;
end;

Que solamente me pasaria el valor de el campo Id_producto a Codigo_pro y aqui cuando hago el doble click no me hace nada...osea, ningun dato se inserta en el primer dbgrid de mi primera forma REFIGERIO.....

(Este procedimiento lo pongo en el segundo formulario, de donde extraere los datos, no se si hay otra forma manito para hacer esta accion que deseo!!, si crees que hay otra forma, por favor participamela, soy novato, pero tal vez pueda entender tu hilo!!)

Gracias Anticipadas!!
Responder Con Cita
  #6  
Antiguo 28-01-2004
fkuong fkuong is offline
Miembro
 
Registrado: sep 2003
Ubicación: Arequipa
Posts: 17
Poder: 0
fkuong Va por buen camino
Hola Mickey:

He leido tu problemilla, me parece que quieres guardar el valor del ID_PRODUCTO en CODIGO_PRO. Correcto?, si es así, tu error es sencillo.

Primero, cuando trabajas en un DBGrid, y este está relacionado a una Tabla, el puntero del DBGrid es el mismo de la Tabla, es por ello que puedes leer el valor actual del registro. Hasta allí vas bien.

Ahora en el otro Form, supondo que la tabla Tfacturad esta en Open. La línea que te faltaría antes de la asignación del valor es el Insert, o Edit, pues sino, la asignación no tiene ningún efecto, luego colocaría el Post.

Con esas dos lineas creo que puedes solucionar tu problemas.
__________________
Saludos,

Freddy Kuong
Arequipa-Perú
Responder Con Cita
  #7  
Antiguo 28-01-2004
mickey mickey is offline
Registrado
 
Registrado: ene 2004
Posts: 9
Poder: 0
mickey Va por buen camino
Hola freddy!

Aqui esta el error que ahora me muestra este modulo cuando desde el
form2 selecciono una de las celdas del DBGrid.

esto es lo que tengo en el codigo.


procedure TProducto_factura.DBGrid1DblClick(Sender: TObject);
begin
refigerio.Tfacturad.Insert;
Refigerio.TfacturadCODIGO_PRO.Value := Producto_factura.Table1ID_PRODUCTO.Value;
refigerio.Tfacturad.Post;
Producto_factura.Close;
end;


y este es el error que me da ahora cuando doy doble click en la celda para que me inserte los datos en el primer form!

Project MEGANET.EXE raised exception class DataBaseError with message
'Fiel 'CODIGO' cannot be modified.


Entiendo que lo que me dice es como que estoy tratando de modificar el
campo CODIGO, pero este campo esta es de tipo (autoincrementado), osea que no se que pasa ahi.

Gracias Anticipadas!!
Responder Con Cita
  #8  
Antiguo 28-01-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 19
eduarcol Va por buen camino
ok por lo visto ya tenemos el problema, y dejame decirte que nunca vas a poder hacer eso, el campo autoincrement es un valor de solo lectura que el BDE lo crea al dar un insert y luego no podra ser modificado, si quieres hacer ese proceso deberas cambiar la estructura de la tabla y no colocarlo autoincrement sino integer, yo por lo general recomieno tratar de evitar este tipo de campo y llevar una tabla de contadores, que en el evento onnewrecord podrias asignarlo, suerte
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #9  
Antiguo 28-01-2004
mickey mickey is offline
Registrado
 
Registrado: ene 2004
Posts: 9
Poder: 0
mickey Va por buen camino
Hola eduardo!!

Osea, la tabla Facturah tiene un campo CODIGO (autoincrement), pero el campo codigo_pro, que es en dondde quiero insertar el nuevo valor del form2 no es autoincrementable, sino numerico como me acabas de decir.....osea, este campo CODIGO (autoincrement) es solo para relacionarlo con el campo codigo de la tabla Facturah....

Gracias!
Responder Con Cita
  #10  
Antiguo 28-01-2004
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 15
sitrico Va por buen camino
Si lo que quieres es crear en el segundo DBGrid un registro enlazado a la primera tabla con el campo cogido (que en ambos casos creo que es autoinc) tienes que convertir el campo (Refigerio.TfacturadCODIGO_PRO) en la segunda tabla en un campo integer y en el evento Refigerio.OnNewRecord de la segunda tabla asignas el campo codigo a Producto_factura.Table1ID_PRODUCTO.Value

Refigerio.TfacturadCODIGO_PRO.Value := Producto_factura.Table1ID_PRODUCTO.Value;

Si haces esto cada vez que incluyas un registro en la segunda tabla quedará con el código del registro activo en la primera tabla.

Espero q esto te sirva.
__________________
Sitrico
Responder Con Cita
  #11  
Antiguo 28-01-2004
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 15
Descendents Va por buen camino
La verdad que lo he intentado entender y no me aclaro mucho de qual puede ser tu problema realmente.

Pero un par o tres preguntas

1.¿Es en esta linea cuando te da el error?¿Porque has debugueado no?
Refigerio.TfacturadCODIGO_PRO.Value :=Producto_factura.Table1ID_PRODUCTO.Value;

2.Si en Refigerio.TfacturadCODIGO_PRO.Value := pones otro valor que no sea de Producto_factura(es decir de la tabla del form1), pones un valor , no se, 12 mismo.¿Tambien te da error?

3¿Tu finalidad, es que al hacer doble click en el grid del form2, te haga un insert en la tabla del form2 con datos de la tabla del form1?

Saludos
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón).
Responder Con Cita
  #12  
Antiguo 28-01-2004
mickey mickey is offline
Registrado
 
Registrado: ene 2004
Posts: 9
Poder: 0
mickey Va por buen camino
Hola decendents

mi finalidad es que al hacer doble click en el grid del form2 me haga un insert en el grid del form1, que estara por ende conectado a una tabla claro esta.

Gracias
Responder Con Cita
  #13  
Antiguo 28-01-2004
fkuong fkuong is offline
Miembro
 
Registrado: sep 2003
Ubicación: Arequipa
Posts: 17
Poder: 0
fkuong Va por buen camino
Mickey:
Tu problema está entonces el tu campo autoincrement. Personalmente, nunca los uso pues más son los problemas que me traen que la ayuda que me dan. Cuando deseo que un campo se me auto incremente solo o utilizo un Query para hacer la inserción en ese momento o coloco un par de lineas en el OnBeforeInsert y en el OnNewRecord de la Tabla.
Mejor cambialo a entero, y debe funcionar bien, caso contrario para que pruebas haz la asignación a otro campo, similar, para que veas que funciona.
__________________
Saludos,

Freddy Kuong
Arequipa-Perú
Responder Con Cita
  #14  
Antiguo 29-01-2004
mickey mickey is offline
Registrado
 
Registrado: ene 2004
Posts: 9
Poder: 0
mickey Va por buen camino
Hola a todos muchachos!!

Gracias por la ayuda, creo que ya consegui algo de lo que esperaba, o por lo menos he avanzado en algo, resulta que el error que me daba es porque el campo CODIGO tenia la propiedad ReadOnly = true, solo cambie eso y listo.....en lo otro, cuando ponia en el evento OnDblClick del form2 hacia el
table1.insert;
{Los campos que queria extraer de este form2 al form1}
table1.post

y cuando me iba al form dos no visualizaba nada porque era un nuevo registro......seguire trabajando en esto, ya que tengo un par de dudillas mas que quiero que me aclaren......

Muchisimas gracias por todas las sugerencias hechas a todos!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 16:53:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi