Búsqueda entre dos ddlb

Estoy haciendo un formulario en el que hay dos dlb, uno es para seleccionar el tipo de documento (EMITIDO o RECIBIDO) y el otro es para seleccionar el estado (Atendido, En Tramite, Pendiente, Archivado), en fin.. El asunto es que hice un cursor que es este:
string stado, tipo
tipo = string(ddlb_tipo.text)
stado = string (ddlb_1.text)
DECLARE Buscar CURSOR FOR
SELECT Documento.NReg,
Documento. NOficio,
Documento. FReg,
Documento. HReg,
Documento. Tipo,
Documento. FDoc,
Documento. TipoDoc,
Documento. NFolios,
Documento. NExp,
HistoricoDocumento. OficinaEnvio,
HistoricoDocumento. UsuarioEnvio,
HistoricoDocumento. OficinaRecepcion,
HistoricoDocumento. UsuarioRecepcion,
Documento. Asunto,
Documento. Estado,
HistoricoDocumento. Respuesta
FROM Documento,
HistoricoDocumento
WHERE ( HistoricoDocumento.NReg = Documento.NReg ) and
( HistoricoDocumento.NOficio = Documento.NOficio ) and
( ( Documento.Tipo = :tipo ) AND
( Documento.Estado = :stado )
) ;
open Buscar;
fetch Buscar into :stado, :tipo;
do until sqlca.sqlcode=100
fetch Buscar into :stado, :tipo;
loop
close Buscar;
pero lo puse en una funcion que en el open de la ventana llama a la funcion
y el el boton mostrar puse lo siguiente
string stado, tipo
tipo=string (Left(ddlb_tipo.text,5))
stado= string (left(ddlb_1.text,15))
dw_1.settransobject( sqlca)
dw_1. Retrieve(stado, tipo )
Por favor te ruego dime cual es mi error o como podría hacer la consulta.

4 Respuestas

Respuesta
1
primero en tu cursor el SQLCA.SQLCODE deberia ser = 0 no 100 (100 es cuando no hay datos).
Lo segundo no te entendí, ¿quiere decir que tu ejecutas el script del cursor en el open y no te recupera valores? Prueba cambiando el 100 por el cero haber si ahora pasa.
No paso nada cambiando el 100 por 0...
Cuando le doy clic en el botón mostrar me muestra todo los datos, pero lo que yo quiero e slo siguiente:
1.- Tengo dos ddlb-- uno es para el tipo (EMITOD o RECIBIDO), el otro es para Estado (ATENDIDO, ARCHIVADO, PENDIENTE, EN TRAMITE)
2.- Quiero que al seleccionar por ejemplo TIpo: RECIBIDO y el estado : ATENDIDO.. me muestre solamente los documentos recibidos que tiene su estado atendido ..
Todos esos campos están en la misma tabla llamada documentos, trabajo con sql server 2000 .
Ayudame por favor, debo presentar mi tesis par ael miercole sy me falta esa bendita consulta
Primero aclara una duda en tus campos de la tabla DOCUMENTO como se esta almacenando los valores para las columnas TIPO y ESTADO
ya que tu haces en tu botón mostrar un left a tu drop down list box del valor que seleccionas es decir si se elije EMITIDO el valor para la variable tipo sera EMITÍ y si elije RECIBIDO el valor para la variable estado sera RECIB
Por lo que si en tu tabla DOCUMENTO para el campo TIPO esta almacenándose EMITIDO el retrieve no hará match con el EMITÍ.
Ahora no entiendo porque en el mostrar tienes un retrieve si declaras un cursor.
¿Si vamos por partes tu quieres mostrar los datos en un dw verdad? Entonces porque no defines el select que esta en tu cursor en tu objeto dw y declaras dos argumentos de recuperación uno para el tipo y otro para el estado, así tu Retrieve funcionaria.
Cualquier cosa me avisas.
Respuesta
1
Imagino que los ddlb si te llenan correctamente, ahora quisiera saber si tu DW, es SQLSELECT... es decir si sabes declarar argumentos en tu DW, porque asumo que tienes esto en tu ventana
2 DDLB
1 DW (¿este es de tipo SQLSELECT con 2 argumentos?)
1 botón
En los ddlb agrego yo los item.. el dw lo hice de tipo sql select pero no le puse argumentos...
Y si tengo un botón mostrar
Entonces al hacer esto tu dw_1. Retrieve(stado, tipo ) esta mal pues porque le estas mandando 2 argumentos sin averlos creados, mira así seria tu DW
1 - Eliges SQLSELECT
2 - Eliges tus campos
3 - Declaras y usas tus argumentos, bueno para declararlos te vas al menu design/retrievel arguments, te sale una pantalla donde los declaras, algo así seria

4 - Aceptas
5 - Al costatido de boton gusrdar ahi uno llamado Return esl el 4to ahi le das click
Nota: te en cuenta los tipos de dato
¿No hay problema si yo ingreso mis datos en los ddlb manualmente?..
Bueno no los hay siempre y cuando sean los mimos que estan en tu base de datos
Hice lo que me has dicho, puse le mismo código que te envíe antes, pero no me muestra lo que deseo, me muestra todo lo que tengo en la base de datos,...
Eso es falso, mira dame tu agrégame te ayudo, [email protected] algo debes estar haciendo mal, y no olvides finalizar la pregunta
Respuesta
1
1) En primer lugar si creas un cursor con 15 columnas tu FECTH también debe tener 15 variables, sin embargo solo pones 2 (stado, tipo), desde ahí comienza tu error.
Ahora porque declarar tantas columnas si no lo vas a utilizar.
2) No das a entender que es lo que quieres hacer exactamente.
Explica detalladamente lo que deseas realizar para poder ayudarte.
Tengo un formulario con dos ddlb.. uno para tipo de documento: "Recibido o emitido" y el otro para el estado de documento ("Atendido", "Pendiente, "En Tramite, "Archivado").
Quiero que si por ejemplo selecciona el tipo de documento Recibido y el estado atendido solo debe mostrarme los documentos recibidos que tengan su estado atendido.. eso deseo hacer.. ayudame por favor
En el evento clicked del botón Buscar:
String ls_tipo_doc,ls_est_doc
ls_tipo_doc = ddlb_1.Text
ls_est_doc = ddlb_2.text
dw_1.Retrieve(ls_tipo_doc,ls_est_doc)
//La parte de :
dw_1. SetTransObject(sqlca) debes colocarla en el open de tu ventana.
Respuesta
1
La verdad no entiendo tu código estas variables stado, tipo son del tipo instancia para que luego los llames desde otro objeto, pero que pasaría si el cursor te devuelve más de un valor, lo que veo es que tienes un select gigante solo menciona los dos campos que vas a trabajar y almacena los valores en variables instancia, también te recomiendo que esa función la pongas dentro del botón mostrar si no te sale escríbeme y te digo otra forma de obtener información saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas