a tabla
CP varchar(4) tiene clave foranea.
LOCAL varchar(25)
en la ventana tengo 2 SingleLineEdit
1-cp_e
2-local_e
Hola N.
primero voy a ser pesado con consejos:
Consejo: es mejor nombrar los single lineEdits "sle_cp_e" y "sle_local_e" en vez de respectivamente "cp_e" y "local_e", así cuando ves algún código, ya sabes inmediatamente que se trata de un singleLineEdit y no de un dw, boton, multi-lineEdit, etc.), al empezar con "sle_" ...
Consejo: no es buena costumbre de hacer todo con sle's o montón de controles en una ventana cuando lo puedes solucionar usando datawindows.
Entiendo que ahora no te quieres complicar, pero tenlo en cuenta. Los datawindows te evitan tener muchos trozos de SQL en medio del código, optimizan la comunicación con la base de datos, carga más rápido un control dw con 10 columnas que 10 sle's en una ventana, etc. etc.
(si quieres me mandas tu pbl por correo y te digo cómo haría yo lo mismo usando datawindows,
[email protected]).
Bueno a lo que te interesaba saber:
------------------------------------------------
como hago para enlazar cp_e con CP(tabla). no se si me explico
Lo que quiero hacer es introducir en 'cp_e el' codigopostal, y en 'local_e' tiene que aparecer la localidad.
"En forma automatica." lo tendrás que codificar en el evento "modified" del sle_cp_e (aunque hay más posibilidades). Este se dispara cuando por ejemplo el usuario pulsa el tab o intro o pincha con el ratón en otro control que esté habilitado:
//--------- evento modified del sle_cpe_e: código inicio:
string ls_codigo, ls_local
ls_codigo = this.text
if isnull(ls_codigo) then
ls_codigo = ''
end if
if ls_codigo = '' then
// limpiar el contenido del sle_local_e por haber ejecutado este código ya anteriormente para otro código postal
sle_local_e.text = ''
return
end if
// hacer el select de la base de datos
select local
into :ls_local
from tabla
where cp = :ls_codigo;
// acustumbrate de comprobar siempre si todo SQL vaya bien, te ahorrarás mucho dolor de cabeza
if sqlca.sqlcode = 100 then // entonces no existe el código en la tabla
messagebox('Información', 'El código postal introducido no existe en la base de datos.')
elseif sqlca.sqlcode < 0 then
messagebox('Error de Base de Datos', "Occurió un error de BD: " + sqlca.sqlerrtext)
end if
// pues hemos llegado aquí todo ha ido bien: visual el Local recuperado de la tabla.
sle_local_e.text = ls_local
// ------ fin código evento modified del sle_cp_e
have fun,
Miguel