Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola negrokau.

Una opción de búsqueda es mediante un while como intentaste en tu mensaje inicial:
Código Delphi [-]
var
  Found: Boolean;
begin
  query1.First;
  Found:= False;
  while not query1.Eof and not Found do
  begin
    Found:= cod_barra.Text = query1.FieldValues['cod_barra'];
    query1.Next;
  end;
  if not Found then
   guardar.Click;
  ...
Creo que el error en tu primer código, parte de la confusión que tenés con las estructuras de control.
Como yá te han dicho más arriba, una cosa es una estructura decisión (if/then/else) y otra una de iteracion (for, while, repeat) aunque las dos últimas puedan evaluar alguna condición.

La otra opción, más eficiente, es mediante una consulta SQL:
Código Delphi [-]
function ExisteCodigo(const Value: string): Boolean;
begin
  with TQuery.Create(nil) do
  try
    DatabaseName:= 'NOMBRE_DE_TU_BD';  // Alias (o Ruta a donde esta la tabla)
    SQL.Text:= 'SELECT * FROM TU_TABLA WHERE COD_BARRA = :DATO';  // Cambia 'TU_TABLA' por tu nombre de tabla
    ParamByName('DATO').AsString:= Value;
    Open;
    Result:= not IsEmpty;
    Close;
  finally
    Free;
  end;
end;
De esta manera tu código inicial queda reducido a:
Código Delphi [-]
  if not ExisteCodigo(cod_barra.Text) then
    guardar.Click;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 22-10-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

disculpame la ignorancia amigo... pero como nunca hice como esta en el ejemplo que me diste... en donde lo coloco la consulta?
Código Delphi [-]
function ExisteCodigo(const Value: string): Boolean;
begin
  with TQuery.Create(nil) do
  try
    DatabaseName:= 'C:\SGC v1.0\Database\SGC_v1.GDB';  // Alias (o Ruta a donde esta la tabla)
    SQL.Text:= 'SELECT * FROM FACTURAS WHERE COD_BARRA = ATO';  // Cambia 'TU_TABLA' por tu nombre de tabla
    ParamByName('DATO').AsString:= Value;
    Open;
    Result:= not IsEmpty;
    Close;
  finally
    Free;
  end;
end;
Responder Con Cita
  #3  
Antiguo 22-10-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.679
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Donde quieras, da igual.
Tan sólo recuerda que además deberás declarar la function en la sección private (arriba, al principio del código).

Código Delphi [-]
private
  function ExisteCodigo(const Value: string): Boolean;

Y ese código, esa function, la pones por ejemplo, al final del todo.
Responder Con Cita
  #4  
Antiguo 22-10-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 16
negrokau Va por buen camino
Talking

lo estoy probando pero me salta este error:
Declaration expected but identifier 'private' found
algo no estoy haciendo bien creo....
Responder Con Cita
  #5  
Antiguo 22-10-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.679
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Dónde lo has puesto?.

El código, pega tu código, que no somos adivinos
_______________________________||
_______________________________\/
Responder Con Cita
  #6  
Antiguo 23-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola negrokau.

Declararlo como un método como te indica Casimiro es la mejor opción ya que no importa la posición donde ubiques el código de la función:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages,...;

type
  TForm1 = class(TForm)
    ...
  private
     function ExisteCodigo(const Value: string): Boolean;
  public
  end;

var
  Form1: TForm1;

implementation  {$R *.dfm}

// aca el resto de tu codigo

function TForm1.ExisteCodigo(const Value: string): Boolean;
begin
 with TQuery.Create(nil) do
  try
    DatabaseName:= 'C:\SGC v1.0\Database\SGC_v1.GDB';
    SQL.Text:= 'SELECT * FROM FACTURAS WHERE COD_BARRA =:DATO';
    ParamByName('DATO').AsString:= Value;
    Open;
    Result:= not IsEmpty;
    Close;
  finally
    Free;
  end;
end;

// o, si preferís aca el resto de tu codigo

end.

Otra opción es declararlo como función, pero para ello, la cabecera debe estar declarada antes del método o función que la invoque. Para asegurar el tiro, inmediatamente después a la declaración Implementation, de ese modo la función, tendrá alcance a todo código subyacente a ella:
Código Delphi [-]
...
Implementation

function ExisteCodigo(const Value: string): Boolean;
begin
  ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TQuery (Query1->SQL->Add()) lmpadron C++ Builder 2 11-03-2009 17:59:37
¿¿Se puede Hacer?? NEG1414 C++ Builder 7 02-11-2008 22:13:10
Se puede hacer esto ??????? AMINOA2R Firebird e Interbase 2 21-10-2005 17:50:59
Se puede hacer esto en POO? adlfv OOP 8 26-09-2005 16:28:55
se puede hacer armando Conexión con bases de datos 6 20-05-2004 05:12:26


La franja horaria es GMT +2. Ahora son las 13:28:34.


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