Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003

    [Delphi + Postgre] Errore strano

    Recupero dei dati da un db access e li inserisco in un database postgre con la seguente istruzione:
    codice:
    Q_Log.SQL.Clear;
    Q_Log.SQL.Add('INSERT INTO calls ');
    Q_Log.SQL.Add('orainizio, orafine, nomecaller, numcaller, nomecalled, numcalled, stato) VALUES (');
    Q_Log.SQL.Add(''''+ Q_Chiamate.FieldByName('start_time').AsString + ''',');
    Q_Log.SQL.Add(''''+ Q_Chiamate.FieldByName('end_time').AsString + ''',');
    Q_Log.SQL.Add(''''+ nome + ''',');
    Q_Log.SQL.Add(''''+ Q_Chiamate.FieldByName('other_party_name').AsString + ''',');
    Q_Log.SQL.Add('''Operatore'',');
    Q_Log.SQL.Add(''''+ Q_Chiamate.FieldByName('dialed_number').AsString +''',');
    Q_Log.SQL.Add(''''+ stato +''');');
    Q_Log.ExecSQL;
    La query viene eseguita ma, non so per quale motivo, mi restituisce un messagebox con la dicutura "Nessuna colonna definita nel set di righe"

    Che diamine significa? :master:

    Magari può servire.. nella tabella di postgre ho un campo segnato come serial che però essendo autoincrementante, non includo nella lista delle colonne da inserire.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Sembra che manchi una partentesi di apertura prima dell'elenco dei campi... ma ne approfitto per esortarti ad evitare l'uso di "valori in linea" sfruttando invece "valori parametrici" (Params) per eseguire la query.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Originariamente inviato da alka
    Sembra che manchi una partentesi di apertura prima dell'elenco dei campi... ma ne approfitto per esortarti ad evitare l'uso di "valori in linea" sfruttando invece "valori parametrici" (Params) per eseguire la query.
    Sì l'errore della mancanza della parentesi è un errore riportato sul forum ma non presente nel codice.

    P.S. usando gli ADO per la connessione al postgre la proprietà "ParamByName" pare non esistere.. c'è qualcosa di alternativo?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da VaLvOnAuTa
    P.S. usando gli ADO per la connessione al postgre la proprietà "ParamByName" pare non esistere.. c'è qualcosa di alternativo?
    Sì, la proprietà Parameters, poichè ADO ha il proprio meccanismo autonomo di gestione dei parametri.

    Sulla Guida dovresti trovare indicazioni per l'uso.

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

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

  5. #5
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Ho tolto la ADOConnection come intermediario e faccio fare la connessione al database direttamente alla ADOQuery e non mi da più problemi.

    COmunque adesso mi studio un pò i parameters. Grazie

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da VaLvOnAuTa
    Ho tolto la ADOConnection come intermediario e faccio fare la connessione al database direttamente alla ADOQuery e non mi da più problemi.
    Io indagherei sui risvolti di questa soluzione: forse c'era un problema di impostazione della ADOConnection, magari nella ConnectionString, che impediva un corretto interfacciamento al DB.

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

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

  7. #7
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Originariamente inviato da alka
    Io indagherei sui risvolti di questa soluzione: forse c'era un problema di impostazione della ADOConnection, magari nella ConnectionString, che impediva un corretto interfacciamento al DB.

    Ciao!
    La stringa di connessione della ADOConnection l'ho creata col wizard.
    Lo stesso ho fatto per la stringa di connessione della ADOQuery.
    In pratica la stringa è la medesima. Magari c'era qualche errata configurazione della connection che impediva il corretto funzionamento della query.

    Ciao

  8. #8
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Ora che ho risolto un problema me ne ritrovo un altro.
    Ho un campo nel database di tipo "timestamp". Ho bisogno di effettuare una query su tutti i record che abbiano il campo "data" settato con una data data (scusate il gioco di parole ) a prescindere dall'orario.
    Ho impostato la query così:
    codice:
    Q_Log.SQL.Text:='SELECT * FROM tabella WHERE (orainizio>=:INIZIO AND orainizio<:FINE)';
    Ora però non saprei come convertire il parametro in un SQLTimeStamp e, soprattutto, in che unit si trova questo tipo di dato (la unit SqlTimSt non la supporta probabilmente).
    Sto usando ADO quindi l'assegnazione del parametro avviene in due fasi (suppongo):
    Q_Log.Parameters.ParamByName('INIZIO').DataType := SQLTimeStamp;
    Q_Log.Parameters.ParamByName('FINE').DataType := SQLTimeStamp;
    Q_Log.Parameters.ParamByName('INIZIO').Value := DateTimeToSQLTimeStamp(MonthCalendar.Date);
    Q_Log.Parameters.ParamByName('INIZIO').Value := DateTimeToSQLTimeStamp(IncDay(MonthCalendar.Date,1 ));

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 © 2025 vBulletin Solutions, Inc. All rights reserved.