¿Cómo trabajan los cursores?

hola experto. Espero que leas éste mensajes pronto puesto que tengo un poco de urgencia. Bueno el tema es éste. Tengo un formulario donde ingreso los datos personales de una persona y su domicilio,es bastante sencillo ya que no tiene grilla ni un cursor enlazado. En el valid del cuadro de texto tengo así

SELECT id_persona,apellido,nombre,fecha_nac,lugar_nac,barrio,calle,numero,;
torre,piso,nacionalidad,localidad,departamento,celu,teléfono;
FROM celulares RIGHT JOIN persona ON celulares.persona=persona.id_persona;
LEFT JOIN domicilio ON domicilio.id_domicilio=persona.domicilio;
LEFT JOIN telefijo ON telefijo.domicilio=domicilio.id_domicilio;
WHERE persona.cuil=thisform.cuil.Value INTO CURSOR fantasma READWRITE
IF RECCOUNT()>0 THEN
thisform.apellido.Value=fantasma.apellido
thisform.nombre.Value=fantasma.nombre
thisform.fecha_nac.Value=fantasma.fecha_nac
thisform.lugar_nac.Value=fantasma.lugar_nac
thisform.barrio.Value=fantasma.barrio
thisform.calle.Value=fantasma.calle
thisform.numero.Value=fantasma.numero
thisform.torre.Value=fantasma.torre
thisform.piso.Value=fantasma.piso
thisform.localidad.Value=fantasma.localidad
thisform.nacionalidad.Value=fantasma.nacionalidad
thisform.departamento.Value=fantasma.departamento
IF EMPTY(fantasma.teléfono) AND !EMPTY(fantasma.celu) THEN
thisform.teléfono.Value=fantasma.celu
ELSE
thisform.teléfono.Value=fantasma.teléfono
ENDIF
thisform.modificar.Enabled= .T.
thisform.borrar.Enabled= .T.

la tabla persona está dentro de celulares,domicilio dentro de persona y teléfono. Creo que así están bien los INNER. Bueno la cosa es que coloque como coloque las condiciones en el IF siempre se asigna un valor nulo en el thisform.teléfono.value. QUE me falta, que estoy haciendo mal?

1 respuesta

Respuesta
1

Quisiera que veas si la consulta te genera un cursor con datos por tus inner me parecen de lo mas extraños por tal vez yo no conozco la estructura de tus tablas pero para mi que no están bien echas

ésta consulta me genera un cursor llamado fantasma..las estructuras de las tablas son éstas:

persona: con todos sus datos y el id del domicilio

telefijo: con todos sus datos y el id del domicilio

celulares: con todos sus datos y el id de la tabla persona.

la tabla domicilio es la única que no tiene ningún id de otra tabla.

¿Cómo serían los INNER entonces?

Lo que yo te pregunto si que después de hacer las consulta le se le fantasma y luego brow puedes ver que datos te genera y si están bien

mmmmmm...la verdad no entiendo que quieres saber...pero si yo le saco el into cursor..al hacer la selección me trae bien los datos..todos los campos..también se ven los campos del teléfono y el celular..dependiendo dónde lo haya cargado, uno está bien y el otro está nulo.

Entonces

IF EMPTY(fantasma.teléfono) AND !EMPTY(fantasma.celu) THEN
thisform.teléfono.Value=fantasma.celu
ELSE
thisform.teléfono.Value=fantasma.teléfono
ENDIF

Aquí dice si el campo teléfono no esta vacío y el campo celu si esta vacío entonces teléfono=celu sino teléfono=teléfono

¿Y si no tiene ninguno?

Por que no mejor

<div>thisform.teléfono.Value=alltrim(fantasma.teléfono)+' '+alltrim(fantasma.celu)</div>

no pasa nada...sigue igual..cuando ingreso el cuil solo me muestra el teléfono y el celular en nulo..no entiendo que es lo que está pasando..creí que debería ser así de sencillo.

Verifica si te llega información en el cursor que generas no es mas el error entonces y sabes que es difícil adivinas cual es el error desde aquí no te molestes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas