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 04-11-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
Question necesito ayuda urgente con dbgrid !!!!

http://www.geocities.com/efrain_sanmiguel/index.html

sino logran ver la imagen aqui esta la imagen del grid para que se hagan una idea http://www.geocities.com/efrain_sanmiguel/index.html

Tabla Mezclas
-------------
Codigo (String)
CodigoPT (String) LookupKeyfild: CODIGO Lookupresult: CODIGO "De la tabla Productos Terminados"
MP (String)
CodigoMP (String) LookupKeyfild: CODIGO Lookupresult: CODIGO "De la tabla Materia Prima"
Cantiad (Float)
Costo (Float)
Porcentaje (Float) campo calculado
TotalCantidad (Float) campo calculado
TotalCosto (Float) campo calculado
TotalPorcen (Float) campo calculado

-------------------------------------------------------------

Nose si lo estoy haciendo bien o mal asi que Mi pregunta es la siguiente:

1.- Como hago para que al oprimir el boton "Agregar" se active el DBCombo1 = CodigoPT
2.- La celda "Codigo" del grid debe de tener el mismo valor automaticamente que el DBCombo1
3.- El campo porcentaje debe representar el % deacuerdo a las cantidades que se vayan ingresando
4.- Los campos TotalCantidad - TotalCosto - TotalPorcentaje deben de calcularse automaticamente
5.- Al guardar y luego al consultar el codigo debe de mostrar la mezcla que se hizo en el grid

NOTA:El resto de los campos de la tabla Mezclas no se ven en el grid porque estan visible = False
Responder Con Cita
  #2  
Antiguo 04-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

Guia de Estilo

Click Aqui
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 06-11-2005
fefe13 fefe13 is offline
Miembro
 
Registrado: nov 2005
Posts: 15
Poder: 0
fefe13 Va por buen camino
eso

Lo que esta claro es que el dcombobox es una mierda,usa el combo normal,que es el que funciona.
Responder Con Cita
  #4  
Antiguo 06-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por fefe13
Lo que esta claro es que el dcombobox es una mierda,usa el combo normal,que es el que funciona.
En qué te basas para decir que es una mierda?? DBCombobox tiene su funcion. La mayoria creé que este componente deberia mostrar los registros en su item (lo cual hace el DBloolupCombobox), pero no. El DBcombobox se usa (o lo uso) para cambiar el valor de un registro por cualquier valor que se haya aderido o puesto en su propiedad items.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 07-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola amigo EfrainSanmiguel.

Seguramente que si te podemos ayudarte en el foro a resolver tu duda, pero es la tercera vez que leo este hilo y aún no termino de entender que es lo que necesitas.

Si te parece bien lo resolvemos por partes.

Cita:
Empezado por EfrainSanMiguel
1.- Como hago para que al oprimir el boton "Agregar" se active el DBCombo1 = CodigoPT

2.- La celda "Codigo" del grid debe de tener el mismo valor automaticamente que el DBCombo1
- Supongo que el botón agregar es para añadir un registro en el grid.

- Supongo que quieres ligar el DBCombo1 para que se sincronize con el valor de la celda Codigo.

Puedes utilizar el evento OnNewRecord de la tabla que está ligada con el DBGrid.

Código Delphi [-]
procedure Form1.TablaNewRecord(DataSet: TDataSet);
begin
 DataSet.FiledByName('Codigo').Value:=OtraTabla.FiledByName('Codigo').Value;
end;

Claro que tienes que poner los nombres adecuados de las tablas y los campos.

De esta forma sólo tienes que poner en el evento OnClick del botón esto:

Código Delphi [-]
procedure Form1.Botton1Click(Sender: TObject);
begin
 Tabla.Insert;
end;

Después de insertar, la celda Código tendrá automáticamente el valor que aparece en el DBCombo1.

---------------------------------------------------
Responde aqui mismo si te sirve o no la respuesta asi será más fácil que alguien te ayude; después resolvemos los demás puntos.

Sé que tienes algo de prisa pero debes darle seguimiento a cada hilo que abres, no iniciar más hilos con el mismo tema.

Un saludo.

Última edición por Héctor Randolph fecha: 07-11-2005 a las 23:49:30.
Responder Con Cita
  #6  
Antiguo 08-11-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
Thumbs up Gracias Por Responder

Hola muchisimas gracias por ayudarme, lo que pasa es que abri varios hilos porque me dijeron que no estaba bien el titulo que le habia puesto al hilo... y en los otros habian quedado en el olvido ya nadie me respondia... pero en fin.

veras, lo que me pusiste no me sirve te explico que es lo que necesito:

1.- cuando yo oprimo el boton "agregar" el lo que hace es seguir insertando filas en el grid, pero yo lo que quiero es que si yo agrego por ejemplo 2 lineas en el grid.. cuando le de al boton "agregar" me vuelva a poner el grid en limpio me entiendes.....

nose si quieras que te envie el sistema para que lo puedas ver???
Responder Con Cita
  #7  
Antiguo 08-11-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por EfrainSanmiguel
nose si quieras que te envie el sistema para que lo puedas ver???
No se si ya leíste la guía de estilo....

Cita:
Empezado por EfrainSanmiguel
yo agrego por ejemplo 2 lineas en el grid
¿No sería mejor agrega una línea y con esa línea ya sea agregarlos datos en caso de que se vaya a grabar o cancelar la acción en case de que no se grabe nada?
Mi punto es, que no entiendo porque agregar dos líneas (Registros) vacías

Cita:
Empezado por EfrainSanmiguel
me entiendes.....
Yo no
__________________

Responder Con Cita
  #8  
Antiguo 08-11-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
Unhappy

hola disculpa por no haberme explicado bien, no es que cada dos lineas graba... no.... el graba cada liena que yo agrego al grid al presionar la flecha hacia abajo del teclado el la graba ... lo de las dos lineas fue solo un ejemplo, un decir.

el punto era lo que le seguia...
Responder Con Cita
  #9  
Antiguo 08-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Ok. vamos con más calma.

Creo que empezamos mal, primero vamos a plantear lo que realmente quieres hacer y después vemos que componentes de Delphi utilizamos para resolverlo.

Lo que tú tienes es una relación maestro-detalle.

En tu caso la tabla maestro es Mezclas, esta tabla tiene un campo código de producto terminado (el cual esta ligado con otra tabla). Después de fijar el código de un producto terminado, deseas agregar en la tabla detalle varias materias primas cada cual con su cantidad, costo, porcentaje.

Al momento de agregar las materias primas, deseas obtener en la tabla mezclas la suma de todos los costos, las cantidades y los porcentajes.

¿Es correcto?
Responder Con Cita
  #10  
Antiguo 08-11-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
Smile

exactamente, eso es exactamente lo que necesito hacer veras yo tengo una tabla de productor terminados y tengo otra de materias primas, entonces en la tabla mezcla necesito lo siguiente:

seleccionar del combo el codigo de un producto terminado "x" y asignarle a traves del grid varias materias primas con sus cantidades, costos, y porcentajes....... y que quede grabado eso, en pocas palabras eso seria como la receta (lo que se necesita para poder producir ese producto terminado)..

guao, muchas gracias de verdad de ante mano.... ojala y me puedan ayudar..!
Responder Con Cita
  #11  
Antiguo 08-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
1.- Primero que nada establece la relación Maestro-Detalle entre las tablas Mezclas/Materias_Primas.

Esto lo puedes hacer con las propiedades MasterSource y MasterFields del DataSet Detalle (Materias_Primas)

En este punto te aconsejo que veas un demo que trae delphi que se llama MastApp búscalo en la carpeta de 'Demos/DB'.

2.- Para seleccionar el producto terminado en un ComboBox agrega un DBLookUpComboBox y crea una relación entre la tabla Mezclas/Productos terminados (no es necesario agregar un campo LookUp en la tabla de Mezclas).

3.- Para que cada celda nueva en el DBGrid tenga la clave del producto terminado utiliza el evento OnNewRecord como te lo indique anteriormente

4.- Para calcular los totales puedes utilizar una sentencia SQL en un query por ejemplo:
Código SQL [-]
  SELECT SUM(costos) FROM materias_primas WHERE   codigo_producto=:mi_codigo AND codigo_mezcla=:mi_mezcla;

Debes actualizar las sumas después de guardar cambios o borrar algún registro de la tabla de materias primas, es decir en los eventos OnPost y OnDelete.

Bueno, creo que son muchas cosas a la vez, intenta con esto por lo pronto.

Un saludo.
Responder Con Cita
  #12  
Antiguo 08-11-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
Question

Ok. voy a seguir esos pasos, pero una duda?

porque una relacion maestro delatalle entre Mezclas y materias primas?
no debe ser entre Mezcla-Productos Terminados??

porque el codigo de la mezcla debe ser el mismo del codigo del producto terminado.... y en el grid es donde debo cargar las materias primas que van a conformar el producto terminado "x".....
Responder Con Cita
  #13  
Antiguo 10-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
En realidad necesitas otra tabla para la relación Mezclas-Materias_primas
porque es una relación uno a muchos (1 <-> n).

A cada mezcla se le puede asociar más de una materia prima.

Crea una tabla que se llame partidas_mezclas o algo asi, en ella los atributos son:
el código de la mezcla, y el código de la materia prima,el costo, la cantidad, etc.
Esta nueva tabla es la que estará asociada con el DBGrid.

La relación maestro-detalle es entre Mezclas/Partidas_Mezclas

Por otra parte, la relación Mezclas-Productos terminados es uno a uno (1<->1).

A cada mezcla le corresponde un sólo producto terminado y viceversa.

Esta no es relación maestro-detalle, en este caso puedes utilizar un DBComboLookUp
-------------------------------------------------
Crea esta nueva tabla y seguimos en contacto.

Última edición por Héctor Randolph fecha: 10-11-2005 a las 05:53:29.
Responder Con Cita
  #14  
Antiguo 12-11-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
Question

Hola, ya realice todos los pasos que me dijistes, tengo un detallito necesito que el campo codigo del DBgrid sea igual al valor del DBLookupComboBox

es decir: MisTablas.Mezclas.FieldByName('Codigo').Value := DBlookupComboBox1.Text;
------------------------------------------------------------------------

hice lo que me dijistes del OnewRecord en la tabla que esta ligada al DBgrid pero cuando guarda, lo que hace es poner en el campo codigo del DBgrid el mismo valor del codigo de la materia prima que seleccione en el grid.


este es el codigo que tengo:

procedure TMisTablas.PartidasNewRecord(DataSet: TDataSet);
begin
MisTablas.PartidasCODIGO.Value:= MisTablas.MezclasCodigo.Value;
end;
------------------------------------------------------------------------
este codigo lo uso para guardar:

procedure TFrmMezclas.ItemsGridEnter(Sender: TObject);
begin
if (DSMezclas.DataSet.State = dsEdit) or (DSMezclas.DataSet.State = dsInsert) then
begin
DSMezclas.DataSet.Post;
DSMezclas.DataSet.Refresh;
end;
end;
Responder Con Cita
  #15  
Antiguo 12-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

EfrainSanmiguel, apuesto que no has leido la guia de estilo!!!!
Has posteado en este hilo 6 mensaje, y aun no he visto la primera etiqueta utilizada por tí.
Creo que ya es hora de utilizarlas
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #16  
Antiguo 15-11-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
disculpa!!

a ok. no sabia pero con referente al tema pudieras ayudarme!
Responder Con Cita
  #17  
Antiguo 15-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Disculpa pero no entiendo bien esta parte.

Código Delphi [-]
procedure TFrmMezclas.ItemsGridEnter(Sender: TObject);
begin
  if (DSMezclas.DataSet.State = dsEdit) or (DSMezclas.DataSet.State = dsInsert) then
  begin
     DSMezclas.DataSet.Post;
     DSMezclas.DataSet.Refresh;
  end;
end;

¿Exactamente en que momento activas este código, en el evento OnEnter del DBGrid?

Si es así, ¿Porqué en ese evento?

De hecho yo te sugiero que la tabla mezclas permanezca en estado de inserción/edición mientras agregas los items, si haces un Refresh sobre la tabla posiblemente recorrerás el puntero de registros y tu información no será correcta.

Saludos
Responder Con Cita
  #18  
Antiguo 15-11-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
Question Exacto

Si de hecho es en ese evento onEnter donde tengo ese codigo.

pero como pongo la tabla mezclas todo el tiempo en estado de insercion o edicion, donde pondria ese codigo?
Responder Con Cita
  #19  
Antiguo 15-11-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por HECTOR RANDOLPH
Si es así, ¿Porqué en ese evento?
yo tampoco entendí porque
__________________

Responder Con Cita
  #20  
Antiguo 14-12-2005
EfrainSanmiguel EfrainSanmiguel is offline
Miembro
 
Registrado: oct 2004
Ubicación: Venezuela
Posts: 39
Poder: 0
EfrainSanmiguel Va por buen camino
Thumbs up listo

gracias a todos los que colaboraron.... les agradesco en verdad... ya solucione mi problema...
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 15:58:27.


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