![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
BUsque con Locate
Que parámetro tengo que poner en 'Locate' para que me realice una búsqueda exacta?
Es decir: ModuloDatos.TblPagos.Locate('NumFact',Busca.Text,????); Ya que en mi aplicacion busco una factura para cargar el pago de la misma, y quiero que si el número tipeado no corresponde a una factura, o la misma ya está paga, entones muestre el mensaje correspondiente. Gracias, saludos.- Silvio.- |
#2
|
|||
|
|||
tienes que poner:
[loPartialKey] |
#3
|
|||
|
|||
perdona, lo que te he dicho es para querys, pero igualmente pruebalo
|
#4
|
||||
|
||||
Hola!
Da igual que sea un query o una tabla, el locate funciona igual ![]() Saludos! |
#5
|
||||
|
||||
- si usas el loPartialkey te buscara en parte de , es decir que si buscas 10
te puede devolver 10000 - si usas el locaseinsensitive le da igual mayus, mins, portanto solo pasa los corchetes suponiendo que te entiendo bien lo que necesitas es algo asi Código:
if ModuloDatos.TblPagos.Locate('NumFact',Busca.Text,[]) then begin if ModuloDatos.TblPagos.FieldByName('Pagado').AsBolean then ShowMessage('Pagado'); //// end; espero que te sirva
__________________
Gami ------------------------------------------------------------------ La necesidad no tolera tardanzas pero mas vale tarde que nunca |
#6
|
|||
|
|||
Busqueda con Locate
Gami:
preguntaba porque probé con los corchetes solos pero no funciona, es decir el nº de factura se compone de la siguiente forma 0000-00000000, y yo introduzco en el DBEDit correspondiente 0001-000 y doy 'enter' y me figura la factura del primer usuario que tengo en la base de usuarios, y no me da error es decir que me aparezca el mensaje?? Gracias. Silvio.- |
#7
|
||||
|
||||
Locate te retorna un valor Booleano si no encontró ningun registro, tendrías que verificar este resultado para saber si encontró un registro.
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. ![]() |
#8
|
||||
|
||||
![]() una cosa estas iroduciendo la informacion en un DBEdit???
si lo tienes ligado elproblema es que estas modificando la informacion del registro actual de todas maneras porque no pones el trozo de codigo especifico o enviamelo al correo porque ya estoy un poco a ciegas
__________________
Gami ------------------------------------------------------------------ La necesidad no tolera tardanzas pero mas vale tarde que nunca |
#9
|
|||
|
|||
Busque con Locate
Ok, voy a poner el código que escribí...
Gracias. |
#10
|
|||
|
|||
Busque con Locate
En el evento OnKeyPress del DBEdit (donde cargo el Nºde Factura), escribí:
[code] procedure TForm14.DBEdit2KeyPress(Sender: TObject; var Key: Char); Var n,m,o,p:Variant; begin If Key=#13 Then begin ModuloDatos.TblPagos.Active:=True; ModuloDatos.TblFacturas.Active:=True; ModuloDatos.TblFacturas.Locate('NFactura',DBEDit2.Text,[]); n:=ModuloDatos.TblFacturas.FieldValues['NFactura']; m:=ModuloDatos.TblFacturas.FieldValues['Usuario']; o:=ModuloDatos.TblFacturas.FieldValues['Periodo']; p:=ModuloDatos.TblFacturas.FieldValues['Precio']; ModuloDatos.TblPagos.FieldValues['NFact']:=n; ModuloDatos.TblPagos.FieldValues['Usuario']:=m; ModuloDatos.TblPagos.FieldValues['Periodo']:=o; ModuloDatos.TblPagos.FieldValues['Importe']:=p; Confirmar.SetFocus; end; /[code] Bueno ese es el código, donde tengo problema... Gracias, saludos.- |
#11
|
|||
|
|||
Busque con Locate
Perdón me equivoqué con las etiquetas:
Código:
procedure TForm14.DBEdit2KeyPress(Sender: TObject; var Key: Char); Var n,m,o,p:Variant; begin If Key=#13 Then begin ModuloDatos.TblPagos.Active:=True; ModuloDatos.TblFacturas.Active:=True; ModuloDatos.TblFacturas.Locate('NFactura',DBEDit2.Text,[]); n:=ModuloDatos.TblFacturas.FieldValues['NFactura']; m:=ModuloDatos.TblFacturas.FieldValues['Usuario']; o:=ModuloDatos.TblFacturas.FieldValues['Periodo']; p:=ModuloDatos.TblFacturas.FieldValues['Precio']; ModuloDatos.TblPagos.FieldValues['NFact']:=n; ModuloDatos.TblPagos.FieldValues['Usuario']:=m; ModuloDatos.TblPagos.FieldValues['Periodo']:=o; ModuloDatos.TblPagos.FieldValues['Importe']:=p; Confirmar.SetFocus; end; |
#12
|
||||
|
||||
la verdad no entiendo muy bien lo que quieres lograr pero lo que si veo es que no validas la respuesta del locate y una vez que sales de el modificas los valores de la tabla te aconsejaria probar una cosa como
Código:
procedure TForm14.DBEdit2KeyPress(Sender: TObject; var Key: Char); Var n,m,o,p:Variant; begin If Key=#13 Then begin ModuloDatos.TblPagos.Active:=True; ModuloDatos.TblFacturas.Active:=True; //esto te colocara en la primera pos //aqui validas si realmente ha sido encontrado if ModuloDatos.TblFacturas.Locate('NFactura',DBEDit2.Text,[]) then begin n:=ModuloDatos.TblFacturas.FieldValues['NFactura']; m:=ModuloDatos.TblFacturas.FieldValues['Usuario']; o:=ModuloDatos.TblFacturas.FieldValues['Periodo']; p:=ModuloDatos.TblFacturas.FieldValues['Precio']; ModuloDatos.TblPagos.FieldValues['NFact']:=n; ModuloDatos.TblPagos.FieldValues['Usuario']:=m; ModuloDatos.TblPagos.FieldValues['Periodo']:=o; ModuloDatos.TblPagos.FieldValues['Importe']:=p; Confirmar.SetFocus; end else begin ShowMessage('Factura no encontrada'); (Sender as TDBEdit).SelectAll; end; end; esto lo digo por que en un post anterior me he dado cuenta de que introduces dentro de la factura un "-" solo me queda que si esto no te ayuda pasame el codigo al correo para que lo pueda ver en su globalidad ¿vale?
__________________
Gami ------------------------------------------------------------------ La necesidad no tolera tardanzas pero mas vale tarde que nunca |
![]() |
|
|
![]() |
|