Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,314

    [delphi] refresh di un IBdataset con parametri

    Delphi 7, Firebird 2
    Ciao,

    problema:

    ho un IBDataset nel quale visualizzo dati provenienti da una tabella e da una stored procedure.
    nello statement SQL ho inserito dei parametri, quindi faccio cosi:


    SelectSQL
    codice:
    select
    clienti.id,
    clienti.item,
    saldicliente.saldo
    from clienti
    left join saldicliente(:MiaData,clienti.id) on clienti.id=clienti.id
    where clienti.id is not null
    chiaramente prima di eseguire la OPEN assegno il parametro MiaData .

    il problema nasce nel momento che modifico un valore a questo dataset: il refresh del record non viene eseguito correttamente!

    lo statement SQL del Refresh e' questo :

    codice:
    select
    clienti.id,
    clienti.item,
    saldicliente.saldo
    from clienti
    left join saldicliente(:MiaData,clienti.id) on clienti.id=clienti.id
    where clienti.id =:ID
    nel refresh il valore MiaData e' null!

    dove ho sbagliato?

    ma come posso fare affinche il valore MiaData del refresh sia lo stesso assegnato allo statement Select?????

    sono sicuro che il problema e' in MiaData inquanto se utilizzo la variabile di firebird 'current_date' al posto di MiaData il tutto funziona correttamente.

    grazie per l'aiuto.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,295
    Ma siamo sicuri che quello statement SQL sia corretto?

    Se lo esegui con un valore esplicito, al posto del parametro, magari in un tool SQL amministrativo di InterBase/FireBird, cosa ottieni?

    Peraltro, la stored procedure viene inserita in una join ma non vi è alcun legame che la filtra in qualche modo.

    Insomma, mi sembra che ci siano più situazioni oscure, per le quali non posso esplicitare la presenza di un errore, ma senz'altro non sono del tutto chiarissime o lineari, ovviamente secondo la mia opinione.

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

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,314
    grazie dell'aiuto.

    Originariamente inviato da alka
    Se lo esegui con un valore esplicito, al posto del parametro, magari in un tool SQL amministrativo di InterBase/FireBird, cosa ottieni?
    se lo provo con valori specifici funziona perfettamente!
    tra l'altro non e' la prima volta che utilizzo uno statement di refresh richiamando una stored procedure, e' invece la prima volta che vorrei utilizzarlo con un parametro esterno.
    l'ho provato con ibexpert e inoltre ho provato, a scrivere nel componente IbDataset nel refreshSQL
    codice:
    select
    clienti.id,
    clienti.item,
    saldicliente.saldo
    from clienti
    left join saldicliente(current_date,clienti.id) on clienti.id=clienti.id
    where clienti.id =:ID
    ecco passando come parametro currend_date il dataset viene aggiornato correttamente con i risultati della stored ottenuti alla data corrente.

    Originariamente inviato da alka
    Peraltro, la stored procedure viene inserita in una join ma non vi è alcun legame che la filtra in qualche modo.
    non ho capito... io per ogni clienti.id richiamo la stored che mi restituisce il valore ottenuto con i parametri rappresentati da :MiaData e clienti.id cosa dovrei filtrare?

    cercherò di preparare un minimo di progetto che eventualmente postero'...

    Ciao!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,295
    Originariamente inviato da 123delphi321
    non ho capito... io per ogni clienti.id richiamo la stored che mi restituisce il valore ottenuto con i parametri rappresentati da :MiaData e clienti.id cosa dovrei filtrare?
    Lo statement SQL che hai riportato indica questo legame di join:

    codice:
    left join saldicliente(current_date,clienti.id) on clienti.id=clienti.id
    Cosa significa? :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,314
    significa che per ogni cliente selezionato, attingo il valore saldicliente.saldo dalla stored saldocliente passando come parametri la data e il Id Cliente.

    e' un modo, per attivare la stored, che tra l'altro, fosti tu ad indicarmi e che ho sempre utilizzato con successo ad eccezione di ora in cui dovrei passare l'ulteriore parametro 'MiaData'. il parametro 'clienti.id' viene passato automaticamente...

    grazie sempre per il tuo aiuto!!!

    e buon anno

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.