Ayuda con select y variables
Publicado por Moises Vilchez (6 intervenciones) el 21/12/2009 16:54:35
saludos amigos foxeros, necesito una manito, explico mi problema
tengo un form de registro de articulos, este tiene un campo de lineas, donde debo ingresar la linea,
codigo ----
descripcion ---
unid de medida ---
codlinea ---
he creado otro form de buqueda de lineas para q me ayude a seleccionar, este form consta de un text y un grid.
al dar un enter en el text codlinea de mi formulario de registro este me llama al form de busqueda de lineas
hasta ahi todo bien... lo estoy manejando con parametros, es decir desde el form de registro envio el nombre de la tabla, campo1 y campo2 en variables x ejemplo:
sqlConsulta = [Select codline, nomb FROM Tb_Lineas]
IF Sqlexec(datosql, sqlConsulta ,'SQLLineas' ) < 0
MESSAGEBOX(' Ocurrio un error al conectarse el servidor',16)
RETURN
ENDIF
SELECT SQLLineas
title='Busqueda de Lineas' && titulo de ventana
sBusca= '1200' && Nombre de cursor
sTabla='SQLLineas' && Nombre de la Tabla
sCamp1='SQLLineas. codline' && Campo1
sCamp2='SQLLineas. nomb' && Campo2
DO FORM w_man_bus.scx WITH title, sBusca, sTabla, sCamp1, sCamp2
estas las recibo en el form de busquedad en el evento init
Do Case
CASE sBusca='sBusca' && registro de Lineas
thisform.caption= title
thisform.grid1. RecordSource = sTabla
thisform.grid1. column1.controls ource = sCamp1
thisform.grid1. column2.controls ource = sCamp2
endCase
OJO: con el codigo q adjunto abajo me trabaja, pero solo para una tabla osea las variables q envio no me sirven de mucho, la idea es colocar el el select los parametros enviados, como stabla, scamp1, scamp2, de esta manera
select (sCamp1), (sCamp2) FROM (Tabla), etctc
&& codigo q trabaja especificando los campos y tabla
LOCAL lbusca
lbusca = UPPER(ALLTRIM( This.value) ) && this.value hace referencia al thisform.text1. value
Thisform.grid1. RecordSource = ''
IF LEFT(lbusca, 1)='*'
cbusca =ALLTRIM(SUBSTR( lbusca,2) )
Select SQLLineas.codline, SQLLineas.nomb;
FROM SQLLineas;
Where SQLLineas.nomb= lbusca;
order by SQLLineas.nomb ;
into cursor cLineas
ELSE
Select SQLLineas.codline, SQLLineas.nomb;
FROM SQLLineas;
Where(not deleted()) AND;
(SQLLineas.nomb like "%"+ lbusca + "%" );
order by SQLLineas.nomb ;
into cursor cLineas
Endi
IF _Tally#0 && Cuando tiene valores la consulta
thisform.grid1. RecordSource = 'cLineas'
Thisform.grid1. RecordSourceType = 1
ELSE
Thisform.grid1. RecordSource = ''
ENDIF
Thisform.grid1. refresh
tengo un form de registro de articulos, este tiene un campo de lineas, donde debo ingresar la linea,
codigo ----
descripcion ---
unid de medida ---
codlinea ---
he creado otro form de buqueda de lineas para q me ayude a seleccionar, este form consta de un text y un grid.
al dar un enter en el text codlinea de mi formulario de registro este me llama al form de busqueda de lineas
hasta ahi todo bien... lo estoy manejando con parametros, es decir desde el form de registro envio el nombre de la tabla, campo1 y campo2 en variables x ejemplo:
sqlConsulta = [Select codline, nomb FROM Tb_Lineas]
IF Sqlexec(datosql, sqlConsulta ,'SQLLineas' ) < 0
MESSAGEBOX(' Ocurrio un error al conectarse el servidor',16)
RETURN
ENDIF
SELECT SQLLineas
title='Busqueda de Lineas' && titulo de ventana
sBusca= '1200' && Nombre de cursor
sTabla='SQLLineas' && Nombre de la Tabla
sCamp1='SQLLineas. codline' && Campo1
sCamp2='SQLLineas. nomb' && Campo2
DO FORM w_man_bus.scx WITH title, sBusca, sTabla, sCamp1, sCamp2
estas las recibo en el form de busquedad en el evento init
Do Case
CASE sBusca='sBusca' && registro de Lineas
thisform.caption= title
thisform.grid1. RecordSource = sTabla
thisform.grid1. column1.controls ource = sCamp1
thisform.grid1. column2.controls ource = sCamp2
endCase
OJO: con el codigo q adjunto abajo me trabaja, pero solo para una tabla osea las variables q envio no me sirven de mucho, la idea es colocar el el select los parametros enviados, como stabla, scamp1, scamp2, de esta manera
select (sCamp1), (sCamp2) FROM (Tabla), etctc
&& codigo q trabaja especificando los campos y tabla
LOCAL lbusca
lbusca = UPPER(ALLTRIM( This.value) ) && this.value hace referencia al thisform.text1. value
Thisform.grid1. RecordSource = ''
IF LEFT(lbusca, 1)='*'
cbusca =ALLTRIM(SUBSTR( lbusca,2) )
Select SQLLineas.codline, SQLLineas.nomb;
FROM SQLLineas;
Where SQLLineas.nomb= lbusca;
order by SQLLineas.nomb ;
into cursor cLineas
ELSE
Select SQLLineas.codline, SQLLineas.nomb;
FROM SQLLineas;
Where(not deleted()) AND;
(SQLLineas.nomb like "%"+ lbusca + "%" );
order by SQLLineas.nomb ;
into cursor cLineas
Endi
IF _Tally#0 && Cuando tiene valores la consulta
thisform.grid1. RecordSource = 'cLineas'
Thisform.grid1. RecordSourceType = 1
ELSE
Thisform.grid1. RecordSource = ''
ENDIF
Thisform.grid1. refresh
Valora esta pregunta
0