Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [delphi 2006]Errore su query

    Ciao!
    Ho passato la domenica cercando di capire il perché di quest'errore: adesso mi arrendo!
    Uso db Firebird ed i componenti DBExpress. Ho questa query :
    codice:
    procedure TformRepertorio.btCercaRepertorioClick(Sender: TObject);
    var
      ImageFileName:string;
    begin
      if cmbComune.KeyValue<>null then
      if cmbRepertorio.KeyValue<>null then
          CercaRepertorio.DataSet.CommandText:= 'select * from    Repertorio where Rep_comune=' +inttostr(cmbComune.keyvalue) + ' and Rep_intervallo= ' + (cmbRepertorio.text);
    CercaRepertorio.active:=true;
    begin
    
        ImageFileName:=CercaRepertorio.FieldByName('Rep_jpg').AsString;
        ImgRepertorio.Bitmap.LoadFromFile(ExtractFilePath(Application.exename)+'Repertori\'+ ImageFileName);
     end;
    end;
    L'errore è questo:
    Database server error: Token unknown -line1, char 49 where.
    Se metto dei break point le variabili rispondono perfettamente agli input esterni: io credo che sia un problema di sintassi della query perché dipende tutto da quel "where"... Di cosa potrebbe trattarsi?
    Grazie per ogni eventuale aiuto!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Se il parametro inserito "in linea" nella clausola WHERE è una stringa, occorre delimitarla con appositi apici.

    Io suggerisco comunque di usare parametri al posto di accodare valori direttamente nella stringa.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ciao!
    Se anche sostituisco la query con
    codice:
    'select * from Repertorio where Rep_comune=' +
          inttostr(cmbComune.keyvalue) + ' and Rep_intervallo= ' + inttostr(cmbRepertorio.keyvalue);
    il messaggio di errore non cambia minimamente.
    Proverò con l'assegnazione dei parametri.
    Grazie

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Che tipo di componente è CercaRepertorio?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    E' un TSimpleDataset.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da vicky
    E' un TSimpleDataset.
    Purtroppo non ho Delphi sottomano al momento, quindi non posso verificarlo ma...siamo sicuri che il componente non abbia una proprietà CommandText propria da utilizzare (senza accedere all'omonima proprietà del DataSet al suo interno)?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Ho provato con i parametri:
    [Code ]
    if cmbComune.KeyValue<>null then
    if cmbRepertorio.KeyValue<>null then

    CercaRepertorio.Params.ParamByName('Comune').AsInt eger:=Comune.FieldByName('Comune_id').AsInteger;
    CercaRepertorio.Params.ParamByName('Intervallo').A sInteger:=Repertorio.FieldByName ('Rep_id').AsInteger;

    CercaRepertorio.DataSet.CommandText:= 'select * from "Repertorio" where Rep_comune=:Comune and Rep_intervallo=:Intervallo';
    CercaRepertorio.active:=true;
    [/code]
    Errore:
    Unknown picture file extension (.)

    Faccio presente che ho inserito JPEG nella sezione Uses della Unit, e che i miei file hanno l'estenzione jpg ovviemente.

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da vicky
    Errore:
    Unknown picture file extension (.)
    Non vedo alcuna attinenza tra l'estensione del file e il caricamento di dati dalla query.

    Credo che i due ambiti non abbiano nulla a che vedere l'uno con l'altro.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Purtroppo non ho Delphi sottomano al momento, quindi non posso verificarlo ma...siamo sicuri che il componente non abbia una proprietà CommandText propria da utilizzare (senza accedere all'omonima proprietà del DataSet al suo interno)?
    Ho verificato io: non esiste proprietà CommandText legata direttamente al SimpleDataset senza passare per Dataset interno.

    Tu pensi che il problema, quindi, non sia della query ma del codice successivo per visualizzare l'immagine. Bene. Il dubbio, però mi resta in quanto se metto un punto d'arresto dopo la query vedo che i parametri assegnati dall'esterno non passano all'interno della query mentre sono presenti nel codice precedente che uso per assegnare i valori ai parametri stessi. Mi sono spiegata?

  10. #10
    Risolto!
    C'era un problema di Parametro passato come integer invece che come string alla query.
    Questo è il codice corretto:
    codice:
    CercaRepertorio.Params.ParamByName('Comune').AsInteger:=Comune.FieldByName('Comune_id').AsInteger;
        CercaRepertorio.Params.ParamByName('Intervallo').asstring :=Repertorio.FieldByName ('Rep_intervallo').Asstring ;
    In effetti lo potevo sapere solo io che il valore passato alla query doveva essere tipo stringa...
    Mi ha fuorviato il messaggio di errore, mettiamola così
    Grazie ancora!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.