FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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:
|
#3
|
|||
|
|||
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.
Última edición por marcoszorrilla fecha: 06-05-2005 a las 21:01:56. |
#4
|
|||
|
|||
Orientación
Osea, si habilito lo que está en comentario me marca el siguiente error de compilación:
Cannot assign to read-only property. |
#5
|
||||
|
||||
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:
|
#6
|
|||
|
|||
Cita:
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" |
#7
|
||||
|
||||
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:
|
#8
|
|||
|
|||
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 |
|
|
|