+ Rispondi
Risultati da 1 a 4 di 4

Discussione: delphi5 query e le date

  1. #1
    Nuovo della community L'avatar di bruno07
    reputazione complessiva: 1 1

    Messaggi
    4

    delphi5 query e le date

    non riesco a capire dove sbaglio !
    Ho creato questa query per ragruppare i record di un dato periodo con una data ma non riesco a farla funzionare ! Di seguito riporto il codice :

    with qrAttivita do
    begin
    if active = true then active := false;
    sql.clear;
    sql.add('select * from Attivita');

    if (DateTimePicker1.Checked = true) or (DateTimePicker2.Checked = true) then à
    begin
    d0 := FormatDateTime('mm/dd/yyyy',DateTimePicker1.Date) ;
    d1 := FormatDateTime('mm/dd/yyyy',DateTimePicker2.Date);

    sql.add('where ((Datavisita) = '+d0+') and ((Datavisita) = '+d1+')');

    end;
    active := true;
    end

    Dove è l'errore ???
    Grazie per l'aiuto!

  2. #2
    Very Important Person L'avatar di cyberlaundry
    reputazione complessiva: 8 8

    Messaggi
    634
    Diciamo che l'errore è supporre che il database che usi utilizzi il formato data/ora che tu "hai deciso" essere mm/dd/yyyy.
    Ci mancano un po' di dati:
    - Tipo di "strato" software di connessione (BDE, IBX ecc)
    - Tipo di RDBMS
    Andando per ipotesi, facciamo finta che qrAttivita sia un componente TQuery.
    In questo caso stai usando BDE, che tra mille difetti ha il pregio di adeguarsi da solo al tipo di RDBMS che usi.
    Basta però che usi i parametri.
    Ad esempio la query

    SELECT * FROM BOLLE WHERE DATABOLLA > <una_determinata_data>

    deve essere scritta in questo modo, supponendo che qrMiaQuery è un componente TQuery e che la variabile dt: TDateTime sia inizializzata dal programma:

    Codice:
    with qrMiaQuery do
    begin
      Active := false;
      SQL.Text := 'SELECT * FROM BOLLE WHERE DATABOLLA > :LAMIADATA'
      ParamByName('LAMIADATA').DataType := ftDate; // Probabilmente non è necessario
      ParamByName('LAMIADATA').AsDate := dt;
      Open;
    end;
    Se non usi TQuery ma TSQLQuery (IBX) dovrebbe essere uguale.
    Con TADOQuery (che però non conosco) dovrebbe esserci qualcosa di paragonabile a ParamByName.

    Ciao
    Lettura consigliata: Come porre le domande in modo intelligente

    RICORDA
    che il
    modo migliore per ringraziare chi ti dà supporto è di fare click su "reputazione"
    Se risolvi da solo il problema che hai postato, condividi con noi la soluzione. Potrebbe essere utile ad altri.


  3. #3
    Nuovo della community L'avatar di bruno07
    reputazione complessiva: 1 1

    Messaggi
    4
    Scusami l'insufficienza di dati, per precisare uso un oggetto Tquery, che si collega ad una tabella Access con un DSN.
    Comunque faccio un pò di prove con il suggerimento ricevuto
    Grazie

  4. #4
    Very Important Person L'avatar di cyberlaundry
    reputazione complessiva: 8 8

    Messaggi
    634
    Citazione Originariamente Scritto da bruno07 Visualizza Messaggio
    uso un oggetto Tquery, che si collega ad una tabella Access con un DSN
    Scusa, una curiosità: perché usi BDE, e non i componenti ADO che nel tuo caso sono forse più indicati?
    Lo strato BDE è abbastanza "spesso", ed è "deprecated" nel senso che già da anni nessuno lo porta più avanti.
    Sta già sparendo dalle nuove versioni di Delphi (non so nemmeno se c'é più in Delphi2010).
    Lettura consigliata: Come porre le domande in modo intelligente

    RICORDA
    che il
    modo migliore per ringraziare chi ti dà supporto è di fare click su "reputazione"
    Se risolvi da solo il problema che hai postato, condividi con noi la soluzione. Potrebbe essere utile ad altri.


+ Rispondi

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi