Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
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.-
Responder Con Cita
  #2  
Antiguo 22-07-2004
neon neon is offline
Miembro
 
Registrado: jul 2004
Posts: 62
Poder: 20
neon Va por buen camino
tienes que poner:

[loPartialKey]
Responder Con Cita
  #3  
Antiguo 22-07-2004
neon neon is offline
Miembro
 
Registrado: jul 2004
Posts: 62
Poder: 20
neon Va por buen camino
perdona, lo que te he dicho es para querys, pero igualmente pruebalo
Responder Con Cita
  #4  
Antiguo 22-07-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
Hola!

Da igual que sea un query o una tabla, el locate funciona igual .

Saludos!
Responder Con Cita
  #5  
Antiguo 22-07-2004
Avatar de argami
argami argami is offline
Miembro
 
Registrado: jun 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
argami Va por buen camino
- 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;
PD:El locate es del TDataSet portanto todos los componentes derivados de este tienen esta funcion (TTables, Tquerys, TclientDataSet, etc...)

espero que te sirva
__________________
Gami

------------------------------------------------------------------
La necesidad no tolera tardanzas pero mas vale tarde que nunca
Responder Con Cita
  #6  
Antiguo 22-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
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.-
Responder Con Cita
  #7  
Antiguo 22-07-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 22-07-2004
Avatar de argami
argami argami is offline
Miembro
 
Registrado: jun 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
argami Va por buen camino
Red face

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
Responder Con Cita
  #9  
Antiguo 23-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Busque con Locate

Ok, voy a poner el código que escribí...
Gracias.
Responder Con Cita
  #10  
Antiguo 23-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
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.-
Responder Con Cita
  #11  
Antiguo 23-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
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;
Responder Con Cita
  #12  
Antiguo 23-07-2004
Avatar de argami
argami argami is offline
Miembro
 
Registrado: jun 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
argami Va por buen camino
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;
Otra cosa es has verificado que no tengas caracteres raros o que necesites una busqueda no sensitiva a las mays es decir un locaseinsensitive?
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:17:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi