Hola Chalo.
Primeramente esta línea es muy peligrosa:
Cita:
dmcontactos.tblcontactosID_CATEGORIA.asvariant:= tcombobox.text;
|
Al asignarle valores al TField como
AsVariant te aceptará casi cualquiera sin protestar. Pero la lógica indica que debería ser un entero y eso es igual a problemas.
Tanto es así que le estás asignando la propiedad
Text (
AnsiString) desde un
TComboBox.
En cuanto a como seleccionar la categoría, si ya están ingresadas, sería más sencillo en lugar de
TEdit y
TComboBox usar
TDBEdit y
TDBLookupComboBox.
Pone tres DBEdits y en cada uno las siguientes propiedades:
- DBEdit1->DataSource = dsContactos (DataSource de contactos)
- DBEdit1->DataField = nombre
- DBEdit2->DataSource = dsContactos (DataSource de contactos)
- DBEdit2->DataField = direccion
- DBEdit3->DataSource = dsContactos (DataSource de contactos)
- DBEdit3->DataField = telefono
El campo
@id_contacto no es necesario ingresarlo por que supongo que será autoincremental.
Y para ingresar valores en
@categoria, al
TDBLookupComboBox, asignale las siguientes propiedades:
- DataSource = dsContactos (DataSource de contactos)
- DataField = @categoria (campo que recibe la selección)
- ListSource = dsCategoria (DataSource de categoria)
- ListField = descripcion (campo que se muestra)
- KeyField = @id_categoria (campo id de categoria)
Todo esto lo haces desde el Object Inspector sin una línea de código.
De esa forma al campo
@categoria de la tabla contactos, solo se le podrán asignar valores existentes en la tabla categorias.
Un saludo.