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

    [delphi] Gestire (append delete modify) tabella Interbase

    Ciao a tutti,

    dovreigestire dei valori di una tabella.

    in pratica ho una form, e in essa un maskedit nel quale inserisco un valore,....poi premedo un pulsante eseguo il seguente codice:
    codice:
    procedure TForm1.Button2Click(Sender: TObject);
    begin
     IBQuery2.SQL.Text := 'SELECT * FROM Tabella where CODICE like :ParParola';
     IBQuery2.ParamByName('ParParola').AsString := MaskEdit1.Text;
     IBQuery2.Open;
    end;
    sempre su questa form, ho anke un datasource a cui collego il risultato di Query2, ed infine ho dei campi TBedit collegati ai fields del datasource.


    ebbene: immesso il codice la query funziona e ottengo i valori desiderati. MA NON RIESCO A MODIFICARLI.
    i valori sono readonly.

    Perfavore mi potete dire come devo fare?

    ancora una cosa:
    prima di effettuare un'altra query devo chiudere quella già fatta query (query2.close) o, la successiva viene sovrapposta automaticamente?

    grazieeeee

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Re: [delphi] Gestire (append delete modify) tabella Interbase

    Originariamente inviato da 123delphi321
    ebbene: immesso il codice la query funziona e ottengo i valori desiderati. MA NON RIESCO A MODIFICARLI.
    i valori sono readonly.
    Perfavore mi potete dire come devo fare?
    Ne avevamo già parlato. Una query è di sola lettura, almeno che tu non dica a Delphi come è possibile effettuare inserimenti, aggiornamenti e cancellazioni usando il componente TIBUpdateSQL.

    Rileggi questa discussione.

    Originariamente inviato da 123delphi321
    prima di effettuare un'altra query devo chiudere quella già fatta query (query2.close) o, la successiva viene sovrapposta automaticamente?
    Se usi lo stesso componente, devi chiudere la query attraverso il metodo Close, modificare lo statement SQL attraverso la proprietà SQL e riaprire (eseguire) la query usando il metodo Open, anche se io suggerirei di usare due componenti separati se intendi agganciare al componente che rappresenta la query dei dati modificabili un componente TIBUpdateSQL.

    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,315
    ...ho riletto la discussione di cui parlavi,...ma mi sto perdendo per qualcosa che certamente e' semplice ma a me ancora non chiaro.

    ho inserito sulla form:

    Ibdatabase
    Ibtransaction
    IbQuery
    IbUpdateSql
    Datasouce
    DbEdit

    questi sono gli elementi minimi x poter modificare un field di record... giusto?

    ecco, eseguo la query:
    select * from tabella where codice = '0001'
    ed ottengo un dataset con 1 solo record.... ok;

    a questo punto viene visualizzato il contenuto del field 'Nome' nella dbedit opportunamente assegnata.

    a questo punto, come devo settare la proprieta x poter modificare il campo?

    credo che nella proprieta di IBquery devo settare UpdateObject con IBupdateSql1 (che ho gai inserito sulla form)..

    ma non riesco ad andare avanti.

    se hai un esempio di codice...forse riesco a capirlo meglio

    grazie :

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    ...forse devo utilizzare la proprieta TLiveMode e settarla in qualche maniera particolare?

    qualcuno mi puo' aiutare?


    grazie

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Le informazioni che ti ho fornito sino ad ora le ho prese direttamente dalla Guida in linea di Delphi.

    Non ho tempo di produrre esempi particolarmente estesi o di studiarmi i particolari dei componenti IBX...

    Leggendo la Guida in merito alle proprietà e ai metodi che hai citato, non trovi proprio alcuna informazione utile?

    Non ottieni alcun risultato facendo prove tecniche?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    sto procedendo con le prove tecniche.....

    ho utilizzato l'editor per la creazione delle stringhe di update in IBUpdateSql.
    ....adesso inizia a funzionare.

    tutto inizia a partire da qui:
    codice:
     IBQuery2.SQL.Text := 'SELECT * FROM Tabella_rubrica where upper(CODICE) = '00000001';
     IBQuery2.Open;
    la query restituisce 1 record (codice chiave univoca)

    quindi variando il contenuto dei field...e premendo 'ok'
    codice:
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    //ok
    IBUpdateSQL1.Apply(ukModify);
    end;
    basta fare solo questo,..o devo aggiungere altri comandi ad esempio commit?


    non riesco pero ad aggiungere record ne a cancellarne.

    ho inserito altri 2 tasti quali insert

    codice:
    procedure TForm1.Button6Click(Sender: TObject);
    begin
    // Insert New Record
    IBUpdateSQL1.Apply(ukInsert);
    end;
    in questo caso mi restituisce un errore "Update failed"!



    un altro tasto per eseguire delete

    codice:
    procedure TForm1.Button5Click(Sender: TObject);
    begin
    // Delete
    IBUpdateSQL1.Apply(ukDelete);
    end;
    questo non da errore,...ma non esegue la cancellazione.

    mi sai indicare dove sbaglio?

    e che tecnica e' bene usare per controllare questi eventi?

    grazie

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Se non sbaglio, è sufficiente eseguire le operazioni di Insert, Edit e Delete direttamente sul componente IBQuery, come se fosse una tabella normalissima.

    E' il componente stesso ad utilizzare gli statement SQL forniti dal componente IBUpdateSQL, associato tramite la proprietà UpdateObject, per eseguire le operazioni citate sul database.

    Per fare una prova, aggiungi un componente DataSource da collegare alla IBQuery, poi collega un DBNavigator al DataSource.

    Una IBQuery è per natura una tabella di sola lettura poichè provvede ad estrarre record, magari raccolti da più tabelle e uniti, e li memorizza in una cache interna. Non è in grado di aggiornare le tabelle, a meno che non gli si dica come farlo...e il componente IBUpdateSQL è progettato proprio a questo scopo: fornire alla query gli statement da eseguire per tramutarla in un DataSet capace di eseguire anche aggiornamenti, inserimenti e cancellazioni.

    Il tuo problema è quello di inserire gli statement all'interno del componente IBUpdateSQL in modo opportuno, seguendo gli esempi forniti dalla Guida in linea ai quali puoi accedere facendo clic sul componente e premendo F1.

    Una volta completate queste proprietà, è sufficiente che tu associ il componente IBUpdateSQL alla IBQuery per poter utilizzare quest'ultima così come usavi una comune TTable, per intenderci.

    Devi scusarmi, non ho il tempo di elaborare esempi calzanti e significativi, anche perchè non farei altro che riportarti quelli della Guida in linea, che ti ho già scritto tra l'altro in passato.

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

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

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.