Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: tiberi72 - Febbraio 01, 2012, 06:14:04 pm

Titolo: come aggiornare il valore di una tabella con i tdbedit
Inserito da: tiberi72 - Febbraio 01, 2012, 06:14:04 pm
Ciao,
il programma che sto facendo e' quasi terminato, quindi non disperate.... tra un po mollo!!! ;D

Ho inserito in una form dei campi tdbedit collegati ad un datasource
Su questi campi sono stati inseriti alcuni valori che vorrei aggiornare sulla tabella del datasource alla pressione di un tbutton (quindi a righe di codice per intenderci), solo che non riesco a leggere il valore modificato.
l'istruzione che eseguo e' questa:

Codice: [Seleziona]
  S := 'UPDATE PARAMETRI SET PERCORSO = '''+ DBPERCORSO.FIELD.ASSTRING '''';    SQLTransaction1.commit;
  SQLQUERY1.SQL.Text := S;
  SQLQUERY1.Execsql;
  SQLQUERY1.sql.clear;

  SQLTransaction1.commit;
  // SQLQUERY1.OPEN;
  SQLQUERY1.SQL.Text := 'SELECT * FROM PARAMETRI';
  SQLQUERY1.OPEN;               

pero' se lancio nuovamente il programma mi ritrovo i valori che avevo impostato la volta precedente, come se l'aggiornamento non fosse avvenuto

Praticamente se controllo la variabile S con il debug mi accorgo che il valore di dbpercorso e' rimasto quello di prima anche se in realta' io lo avevo cambiato subito prima di fare click sul bottone (legge il datasource e non il valore che ho scritto a video sul campo)

Qualche suggerimento?
Titolo: Re:come aggiornare il valore di una tabella con i tdbedit
Inserito da: xinyiman - Febbraio 01, 2012, 07:10:40 pm
Si, che database usi?! e quale oggetto di connessione?!
Titolo: Re:come aggiornare il valore di una tabella con i tdbedit
Inserito da: tiberi72 - Febbraio 02, 2012, 08:53:46 am
Firebird 2.5

codice preso dall unit.lfm
Codice: [Seleziona]
object IBConnection1: TIBConnection
    Connected = True
    LoginPrompt = False
    DatabaseName = 'D:\DB.FDB'
    KeepConnection = False
    Password = 'masterkey'
    Transaction = SQLTransaction1
    UserName = 'SYSDBA'
    HostName = 'localhost'
    LogEvents = []
    left = 144
    top = 136
  end
  object SQLTransaction1: TSQLTransaction
    Active = True
    Action = caNone
    Database = IBConnection1
    left = 176
    top = 136
  end
  object SQLQuery1: TSQLQuery
    IndexName = 'DEFAULT_ORDER'
    FieldDefs = <   
      item
        Name = 'PERCORSO'
        DataType = ftString
        Precision = -1
        Size = 255
      end   
   Active = True
    Database = IBConnection1
    Transaction = SQLTransaction1
    SQL.Strings = (
      'select *'
      'from PARAMETRI'
    )
    Params = <>
    left = 208
    top = 136
  end
  object Datasource1: TDatasource
    DataSet = SQLQuery1
    left = 240
    top = 136
  end
Titolo: Re:come aggiornare il valore di una tabella con i tdbedit
Inserito da: xinyiman - Febbraio 02, 2012, 09:04:32 am
Quindi se non ho capito male il programma funziona, solo che quando lo chiudi e lo riapri sembra che non abbia preso le modifiche fatte. Prova ad eseguire

Transaction.Commit;

dopo l'aggiornamento

Titolo: Re:come aggiornare il valore di una tabella con i tdbedit
Inserito da: tiberi72 - Febbraio 02, 2012, 09:14:05 am
La cosa strana e' che anche la variabile che compone la stringa per l'update, in fase di debug, non contiene il valore modificato ma bensi' il valore originale.
Non e' che uso un modo sbagliato per leggere il campo tdbedit?
Io ho usato
DBPERCORSO.FIELD.ASSTRING
Titolo: Re:come aggiornare il valore di una tabella con i tdbedit
Inserito da: tiberi72 - Febbraio 02, 2012, 09:18:54 am
penso di aver trovato qualcosa di utile,
la variabile va letta come DBPERCORSO.Text
nel caso avessi anche una variabile float come posso leggerla?
Titolo: Re:come aggiornare il valore di una tabella con i tdbedit
Inserito da: tiberi72 - Febbraio 02, 2012, 09:23:51 am
Forse ci sono arrivato:
la variabile DBPERCORSO.Text riesco a leggerla in questo modo perche' in precedenza avevo caricato il valore sulla variabile con DBPERCORSO.Text:='valore';

Nella form ci sono invece altre variabili di tipo float che vengono aggiornate direttamente dal datasource e che quindi vengono variate digitando sulla form e lette con dbvar.field.asfloat
Titolo: Re:come aggiornare il valore di una tabella con i tdbedit
Inserito da: xinyiman - Febbraio 02, 2012, 09:31:06 am
Se hai risolto bene, altrimenti ti conviene passarci il sorgente e noi lo verifichiamo!