Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2011
chalo chalo is offline
Registrado
NULL
 
Registrado: ene 2011
Posts: 9
Poder: 0
chalo Va por buen camino
relacionar campos

buenas...mi consulta es la siguiente,
estoy trabajando con delphi 7 y con access 2007.
tengo dos tablas: contactos y categorias.
en contactos tengo los siguientes campo.
@idcontacto / @id_categoria / nombre / direccion / telefono
1 1 gonzalo mendoza 4333222
2 2 diego catamarca 4443332..

@id contacto:clave primaria
@categoria: clave foranea.

y en categorias tengo:

@id_categoria / descripcion
1 familiares
2 amigos...


y lo que deseo hacer es insertar un registro en la tabla contactos. entonces lo que entiendo es que de alguna forma debo saber el id_categoria para poder insertar el registro en ese campo.

entonces lo que hago es lo siguiente atraves de unos edit y tcombobox, en el combobox cargo todos las categorias como una lista atravez de la propiedad tcombobox.items.add(....) eso me sale perfecto porque me muestra bien la lista de la tabla categorias. entonces hago:

dmcontactos.tblcontactos.insert;
dmcontactos.tblcontactosIDCONTACTOS.asinteger:= id;
dmcontactos.tblcontactosNOMBRE.asstring:= edit1.text;
dmcontactos.tblcontactosDIRECCION.asstring:= edit2.text;
dmcontactos.tblcontactosTELEFONO.asvariant:= edit3.text;
dmcontactos.tblcontactosID_CATEGORIA.asvariant:= tcombobox.text;
dmcontactos.tblcontactos.post;

entonces el problema se produce solo en la parte del tcombobox, por que me dice el campo tiene que tener alguna relacion con la otra tabla y dice
key violation no se puede cambiar o agregar el registro por que se necesita un registro relacionado en la tabla 'CATEGORIAS'

podrian ayudarme por favor?
gracias.
chalo.
Responder Con Cita
  #2  
Antiguo 12-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 12-08-2011 a las 07:31:38.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
relacionar 2 tablas con campos multiples como llave saldanaluis SQL 1 23-03-2011 08:36:18
Relacionar dos tablas con otra tabla sin campos iguales sisne SQL 2 26-04-2010 05:28:16
Relacionar proyectos vivamotos C++ Builder 1 25-03-2008 19:57:35
relacionar 3 tablas vivys27 SQL 13 25-03-2008 01:12:36
relacionar dos tablas digital Conexión con bases de datos 1 20-11-2003 09:54:53


La franja horaria es GMT +2. Ahora son las 03:51:50.


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