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 06-05-2005
Snoop_mx Snoop_mx is offline
Registrado
 
Registrado: may 2005
Posts: 5
Poder: 0
Snoop_mx Va por buen camino
Post Orientación - Manejo del DBLoockupComboBox

Alguien me podría orientar para el manejo del DBLoockupComboBox (Parámetros) para agregar al campo IdProveedor el valor Numérico correspondiente (IdProveedor) en vez del Texto (NombreProveedor) que es mostrado en el DBLookupComboBox para que no cause error.

Me explico:

Mi Tabla: tbProveedores (Hecha en SQL Server 2000)
Mis Atributos: idProveedor, NombreProveedor

Cabe recalcar que lo que he hecho en el Object Inspector es:

ListSource: Apuntando al Datasource y del DataSource Apuntando al ADOQuery y dentro del ADOQuery SELECT * FROM tbProveedores
ListField: NombreProveedor
KeyField: idProveedor

Y me muestra todos los nombres de Proveedores, pero a la hora de invocar el procedimiento de guardar en SQL,obviamente me quiere guardar el Texto (NombreProveedor) y no el Número (IdProveedor).

Mi Procedimiento de Agregar es:

Parameters.ParamByName('IdProveedor').Value := edtIdProveedor.Text;
//Donde edtIdProveedor es el DBLookupComboBox
//y el Parámetro IdProveedor esta para recibir un Integer.

Gracias y espero me entiendan, saludos desde Veracruz, México.
Atte. Carlos Valdez. coolio_mx@hotmail.com
Responder Con Cita
  #2  
Antiguo 06-05-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Desde luego tienes un error de diseño porque hacer casar un campo texto con un numérico ó viceversa no es lógico, una posible solución sería aprovechar el evento BeforeInsert de la tabla receptora y transformar el dato de la manera apropiada, según deduzco StrToInt ó IntToStr, según la dirección te resolverían el problema.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 06-05-2005
Snoop_mx Snoop_mx is offline
Registrado
 
Registrado: may 2005
Posts: 5
Poder: 0
Snoop_mx Va por buen camino
Post Orientación

Ok Marcos mira, estaba viendo un link anterior
"Llenar DBLookupComboBox con dos columnas"
http://www.clubdelphi.com/foros/showthread.php?t=21063
Y pues es una buena solucion a mi problema, pero ahora el detalle es:
Cómo hacer para que al seleccionar un registro se cambie automaticamente el (Numero)idProveedor correspondiente así como lo hago en los edits (Texto), (Esto me servirá para poder Modificar un registro y no me marque Error).
Aquí anexo el código donde se ve que los edits que tengo se cambian al que debería de ser cuando se selecciona del DBGrid, no asi los DBLookupComboBox que estan en comentarios.
Código Delphi [-]
procedure TdmProductos.dsProductosDataChange(Sender: TObject;  Field: TField);
 begin
Código Delphi [-]
   frmProductos.edtIdProducto.Text:=     dmProductos.qryVisualiza.Fieldbyname('IdProducto').AsString;
   frmProductos.edtNombreProducto.Text:= dmProductos.qryVisualiza.Fieldbyname('NombreProducto').AsString;
   frmProductos.edtPrecio.Text:=         dmProductos.qryVisualiza.Fieldbyname('Precio').AsString;
  // frmProductos.edtIdProveedor.Text:=    dmProductos.qryVisualiza.Fieldbyname('IdProveedor').AsString;
  // frmProductos.edtIdCategoria.Text:=    dmProductos.qryVisualiza.Fieldbyname('IdCategoria').AsString;
 end;

Última edición por marcoszorrilla fecha: 06-05-2005 a las 21:01:56.
Responder Con Cita
  #4  
Antiguo 06-05-2005
Snoop_mx Snoop_mx is offline
Registrado
 
Registrado: may 2005
Posts: 5
Poder: 0
Snoop_mx Va por buen camino
Post Orientación

Osea, si habilito lo que está en comentario me marca el siguiente error de compilación:

Cannot assign to read-only property.
Responder Con Cita
  #5  
Antiguo 06-05-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
No le veo explicación al error, prueba a pasarle un valor cualquiera al edit, por ejemplo Edit1.Text:='2';

Y sino elimina el Edit y lo vuelves a crear con el mismo nombre.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 06-05-2005
Snoop_mx Snoop_mx is offline
Registrado
 
Registrado: may 2005
Posts: 5
Poder: 0
Snoop_mx Va por buen camino
Unhappy

Cita:
Empezado por marcoszorrilla
No le veo explicación al error, prueba a pasarle un valor cualquiera al edit, por ejemplo Edit1.Text:='2';

Y sino elimina el Edit y lo vuelves a crear con el mismo nombre.

Un Saludo.
ok, disculpa, creo que no fui claro, el edtIdProveedor y edtIdCategoria no son Edits, sino realmente son DBLookupComboBox, en los edits se visualizan e interactuan según el registro que seleccione del DBGrid mientras que en el DBLookupComboBox no cambia, y quiero saber cómo puede interactuar o cambiarse a la opción al cual le pertenece, como lo estan haciendo ahora los Edits.
Los Edits los estoy manejando como si fueran DBEdits. Cabe recalcar que para manejarlos así me fui al Datasource en DataChange y puse el código antes mencionado. Las 2 líneas que están en comentario son líneas que antes pertenecían a edits, pero OJO, los cambié a DBLookupComboBox y ya no sirven, porque me marca: "Cannot assign to read-only property"
Responder Con Cita
  #7  
Antiguo 06-05-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues no te va a funcionar, porque el DbLookUpComboBox, tomará sus valores de una tabla la cual apunte su propiedad ListSource, y la propiedad Text es como apuntas de solo lectura.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #8  
Antiguo 06-05-2005
Snoop_mx Snoop_mx is offline
Registrado
 
Registrado: may 2005
Posts: 5
Poder: 0
Snoop_mx Va por buen camino
Cool Por fin

Ya estuvo, mira, lo solucioné de esta forma:
frmProductos.edtIdProveedor.KeyValue := dmProductos.qryVisualiza.Fieldbyname('IdProveedor').Value;

Con esto vemos cómo cambia o interactua el DbLookUpComboBox con el DBGrid, por fin salió.

Gracias marcoszorrilla por tu atención.

Saludos desde Veracruz, México.
Atte. Carlos Valdez coolio_mx@hotmail.com
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


La franja horaria es GMT +2. Ahora son las 12:34:48.


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