Newsgroup: it.comp.lang.delphi
Titolo: Errore in SQL

Vorrei perchè in EditPresent non esce il numero dei presenti
procedure TStatForm.FormShow(Sender: TObject);
begin
   Presenti.Close;
   Presenti.SQL.Clear;
   Presenti.SQL.Add ('select * from Ospiti.db');
   Presenti.SQL.Add ('where DataPartenza < Date');
   Presenti.Open;
   EditPresent.Text := IntToStr(Presenti.RecordCount);
end;
Grazie
--------------------------------
Inviato via 
http://usenet.libero.it

Vorrei perchč in EditPresent non esce il numero dei presenti
Vorresti perche'?? :-)
Mancano le specifiche sul db utilizzato, se cmq la sql non da errori di esecuzione
probabilmente la sintassi per conforntare le date non e' corretta.
O forse.... non ci sono dati da visualizzare....
Ciao
Morde

Gia in fase di esecuzione mi da questo errore
Invalid use of keyword.
Token : Date
Line Number: 2'.Process stopped. Use Step or Run to Continue.
Io uso Paradox come DB


Io uso Paradox come DB
Non lo conosco, cmq  il problema e' per l'appunto sulle date. 
E' sbagliato il confronto.
Molto probabilmente la funzione che restituisce la data corrente non e' giusta.
Conviente convertirla con : "19/11/2002" (da programma con la data di oggi)
qry.add('select * from Ospiti.db where Ospiti.DataPartenza < "19/11/2002"');
ciao
morde

 Line Number: 2'.Process stopped. Use Step or Run to Continue.
potresti provare anche cosi
Presenti.SQL.Add ('where DataPartenza < :MiaData');
params[0].asDate := Date ;
Presenti.Open;
in questo modo ti svincoli dal dover formattare la variabile che in standard
SQL e paradox non fa eccezzione e' : mm/dd/yyyy
Ciao
Michele

params[0].asDate := Date ;
Eccellente!
Morde

Mi potresti indicare dove posso scaricare componenti per DATABASE free per
Kylix3 Open Source?


non va!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
:'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
:'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
:'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
:'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
:'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
:'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
:'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(
:'( :'(

--------------------------------
Inviato via 
http://usenet.libero.it

 non va!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Mi sembra strano, potresti postare il codice, premetto che sono l'ultima
ruota del carro di sto newsgroup ma lavorando tutti i giorni con db paradox
(condoglianze......) potrei esserti d'aiuto.
Ciao
Michele

Ecco il codice
unit Stat;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Db, DBTables;
type
  TStatForm = class(TForm)
    Generali: TGroupBox;
    Label3: TLabel;
    EditNumOsp: TEdit;
    Maschile: TQuery;
    Femminile: TQuery;
    EditPresent: TEdit;
    Label4: TLabel;
    Label1: TLabel;
    EditMaschile: TEdit;
    EditFemminile: TEdit;
    Label2: TLabel;
    Presenti: TQuery;
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  StatForm: TStatForm;
implementation
{$R *.DFM}
procedure TStatForm.FormShow(Sender: TObject);
begin
  Maschile.Active := True;
  Femminile.Active := True;
  Presenti.Open;
  Maschile.Close;
  Maschile.SQL.Clear;
  Maschile.SQL.Add ('select * from Ospiti.db');
  Maschile.SQL.Add ('where Sesso = "M"');
  Maschile.Open;
  Femminile.Close;
  Femminile.SQL.Clear;
  Femminile.SQL.Add ('select * from Ospiti.db');
  Femminile.SQL.Add ('where Sesso = "F"');
  Femminile.Open;
  Presenti.Close;
  Presenti.SQL.Clear;
  Presenti.SQL.Add ('select * from Ospiti.db');
  Presenti.SQL.Add ('where DataPartenza < :Date');
  Presenti.Open;
  EditMaschile.Text := IntToStr(Maschile.RecordCount);
  EditFemminile.Text := IntToStr(Femminile.RecordCount);
  EditPresent.Text := IntToStr(Presenti.RecordCount);
end;
procedure TStatForm.FormDestroy(Sender: TObject);
begin
  Maschile.Active := False;
  Femminile.Active := False;
  Presenti.Active := False;
end;
end.



Ascolta, perche' non ti sforzi un poco?
Il codice funziona, eccome se funziona.
Morde

  Presenti.Open;
Il codice suggerito da Poison era giusto.
MOrde

Tutto cio solo per avere un conteggio?
Per conoscere la recordcount l'oggetto deve fare un fetchall e se i records
sono tantini, aspetti aspetti aspetti aspetti...
procedure TStatForm.FormShow(Sender: TObject);
const
  BASEQUERY = ' SELECT COUNT(*) AS CONTEGGIO FROM TABELLA WHERE
TABELLA.CAMPODATA <:DATA';
begin
  With presenti do // io metteri un suffisso x capire COSA è "presenti"...
    Close;
    Sql.Add(BASEQUERY);
    ParamByName('Data').AsDateTime := Now;
    Open;
    EditPresenti.Text := FieldByName('Conteggio').AsString
  end;
end;
Bye
A.


anche se io avrei risolto cosi il problema
var
qrTemp : TQuery;
begin
    qrTemp := TQuery.Create(Application);
    try
        with qrTemp do begin
            SQL.Add ('select * from Ospiti.db');
            SQL.Add ('where Sesso =  :sesso');
            params[0].asString := 'M';
            Open;
            if not isEmpty then
                EditMaschile.Text := IntToStr(qrTemp.RecordCount)
            else
                EditMaschile.Text := 'Non ci sono maschi'; //(bene bene)
            if Active then Close;
            SQL.Clear;
            SQL.Add ('select * from Ospiti.db');
            SQL.Add ('where Sesso =  :sesso');
            params[0].asString := 'F';
            Open;
            if not isEmpty then
                EditFemminile.Text := IntToStr(qrTemp.RecordCount) // bene
bene
            else
                EditMaschile.Text := 'Non ci sono femmine'; //(male male)
        end;
    finally
        qrTemp.Close;
         qrTemp.Free;
    end;
end;
Scusa quache eventuale imprecisione ma l'ho scritto di getto senza
controllare.... e tieni presente che ci sono anche le funzioni UTILISSIME
offerte da SQL (inteso come linguaggio) ad es. SUM che nel tuo caso ci va
come il cacio sui maccheroni
Ciao
Michele

 ha scritto nel messaggio
news:arfljm$i3eet$1...@ID-110545.news.dfncis.de...
Ho dimenticato la parte relativa hai presenti, ma se t'impegni puoi farcela
anche da solo
Sorry :-)
Michele