
Consulta- SEEK -
Publicado por victor perez (278 intervenciones) el 11/09/2010 22:47:00
Estimados amigos,
Tengo una base de datos que tiene entre sus campos CODCLI (C,10) y FACTURA (C,10)
Uno de los indices es: CodCli + Factura con el TAG name de CLIENTE.
Tengo el siguiente codigo:
Use BASE_DE_DATOS in 0 Alias X
Sele X
Set order to TAG CLIENTE
_factura= Thisform.txtfactura.value (datos introducidos en el form)
_Cliente= Thisform.txtCodCli.value (datos introducidos en el form)
Seek (_CLIENTE + _FACTURA)
IF FOUND()
MESSAGEBOX("ESTA FACTURA PARA ESTE CLIENTE YA FUE REGISTRADA"
Thisform.pgfPeds.page1.txtCodClte.Value=" "
Thisform.pgfPeds.page1.txtFactura.Value=" "
Thisform.pgfPeds.page1.txtNombre.Value=" "
Thisform.pgfPeds.page1.txtCodClte.SetFocus
ENDIF
----
El problema es que tengo en la base de datos ya introducido por ejemplo:
CodCli= HASETH
Factura= 1
Se supone que si yo hago el SEEK de CodCli + Factura introduciendo en el form valores como HASETH en Cliente y 1 en Factura...el SEEK debe encontrar y dar como resultado .T. el found()
Pero no es asi, y eso me tiene con dolor de cabeza porque no puedo hacerlo.
Para solucionarlo tuve que crear un nuevo index solo con el campo FACTURA y el TAG name FACTURA.
Y el codigo queda asi:
Sele X
GO Top
Set order to tag FACTURA
_factura=ALLTRIM(thisform.pgfPeds.page1.txtFactura.value)
_CLIENTE=THISFORM.PGFpEDS.PAGE1.TXTcODcLTE.Value
SEEK ALLTRIM(_CLIENTE)
IF FOUND()
DO WHILE X.codcli = ALLTRIM(_cliente)
IF X.factura=_Factura
MESSAGEBOX("Ya entrada esta factura")
Thisform.pgfPeds.page1.txtCodClte.Value=" "
Thisform.pgfPeds.page1.txtFactura.Value=" "
Thisform.pgfPeds.page1.txtNombre.Value=" "
Thisform.pgfPeds.page1.txtCodClte.SetFocus
RETURN .T.
ELSE
SKIP
LOOP
ENDIF
ENDDO
ENDIF
Tengo otros forms que combinan dos campos sin ningun problema al buscar pero aquí no se que es lo que pasa. Los otros forms siempre tiene entre uno de sus campos FECHA y se indexa como DTOS.
Cualquier ayuda, bienvenida
Tengo una base de datos que tiene entre sus campos CODCLI (C,10) y FACTURA (C,10)
Uno de los indices es: CodCli + Factura con el TAG name de CLIENTE.
Tengo el siguiente codigo:
Use BASE_DE_DATOS in 0 Alias X
Sele X
Set order to TAG CLIENTE
_factura= Thisform.txtfactura.value (datos introducidos en el form)
_Cliente= Thisform.txtCodCli.value (datos introducidos en el form)
Seek (_CLIENTE + _FACTURA)
IF FOUND()
MESSAGEBOX("ESTA FACTURA PARA ESTE CLIENTE YA FUE REGISTRADA"
Thisform.pgfPeds.page1.txtCodClte.Value=" "
Thisform.pgfPeds.page1.txtFactura.Value=" "
Thisform.pgfPeds.page1.txtNombre.Value=" "
Thisform.pgfPeds.page1.txtCodClte.SetFocus
ENDIF
----
El problema es que tengo en la base de datos ya introducido por ejemplo:
CodCli= HASETH
Factura= 1
Se supone que si yo hago el SEEK de CodCli + Factura introduciendo en el form valores como HASETH en Cliente y 1 en Factura...el SEEK debe encontrar y dar como resultado .T. el found()
Pero no es asi, y eso me tiene con dolor de cabeza porque no puedo hacerlo.
Para solucionarlo tuve que crear un nuevo index solo con el campo FACTURA y el TAG name FACTURA.
Y el codigo queda asi:
Sele X
GO Top
Set order to tag FACTURA
_factura=ALLTRIM(thisform.pgfPeds.page1.txtFactura.value)
_CLIENTE=THISFORM.PGFpEDS.PAGE1.TXTcODcLTE.Value
SEEK ALLTRIM(_CLIENTE)
IF FOUND()
DO WHILE X.codcli = ALLTRIM(_cliente)
IF X.factura=_Factura
MESSAGEBOX("Ya entrada esta factura")
Thisform.pgfPeds.page1.txtCodClte.Value=" "
Thisform.pgfPeds.page1.txtFactura.Value=" "
Thisform.pgfPeds.page1.txtNombre.Value=" "
Thisform.pgfPeds.page1.txtCodClte.SetFocus
RETURN .T.
ELSE
SKIP
LOOP
ENDIF
ENDDO
ENDIF
Tengo otros forms que combinan dos campos sin ningun problema al buscar pero aquí no se que es lo que pasa. Los otros forms siempre tiene entre uno de sus campos FECHA y se indexa como DTOS.
Cualquier ayuda, bienvenida
Valora esta pregunta


0