Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: xinyiman - Gennaio 23, 2014, 06:28:58 pm

Titolo: Editare TBufDataset
Inserito da: xinyiman - Gennaio 23, 2014, 06:28:58 pm
Ciao ragazzi, complice la stanchezza e il cervello che va in loop non ricordo come ovviare ad una cosa banalissima.

Ho un TbufDataSet che visualizzo a video con una dbgrid

se voglio andare a modificare uno dei contenuti del campo uso questa sintassi:

Codice: [Seleziona]
                    Self.Datasource1.DataSet.Edit;
                    Self.Datasource1.DataSet.FieldByName('Soldi').AsFloat:=Soldi;
                    Self.Datasource1.DataSet.Post;   


E mi dice:
Operation not allowed, dataset "%s" is not in an edit or insert state.

Aiuto grazie :)
Titolo: Re:Editare TBufDataset
Inserito da: nomorelogic - Gennaio 23, 2014, 07:24:27 pm
non capisco proprio il perchè dell'errore

fai cleanup & build o prova con una installazione diversa di laz/fpc
Titolo: Re:Editare TBufDataset
Inserito da: xinyiman - Gennaio 23, 2014, 07:28:35 pm
Questo perchè il TBufDataset risiede su una form diversa da dove faccio l'operazione.

Minkia quanto tempo sto perdendo. E non capisco come fare diversamente perchè a me servono su form diverse.
Titolo: Re:Editare TBufDataset
Inserito da: mariomoretti - Gennaio 23, 2014, 09:29:44 pm
Ciao,
self cos'è  ?
se è la grid forse dovresti usare self.datasorce.dataset.edit e non datasource1.
Titolo: Re:Editare TBufDataset
Inserito da: nomorelogic - Gennaio 23, 2014, 11:14:37 pm
Questo perchè il TBufDataset risiede su una form diversa da dove faccio l'operazione.

se la form non è la stessa da dove fai l'operazione le cose cambiano...
self in pratica punta alla form dove non c'è il dataset immagino

prova soluzione (1)
Codice: [Seleziona]
procedure TForm2.ImpostaValore;
begin
   Form1.Dataset1.Edit;
   Form1.Dataset1.FieldByName('Soldi').AsFloat:=Soldi;
   Form1.Dataset1.Post;
end;

oppure con soluzione (2)
in TForm1...
Codice: [Seleziona]
TForm1 = class(TForm)
   ...
public
   property Soldi: extended read FSoldi write SetSoldi;
end


procedure TForm1.SetSoldi(value: extended);
begin
   Dataset1.Edit;
   Dataset1.FieldByName('Soldi').AsFloat:=value;
   Dataset1.Post;
end;

e poi, da Form2:
Form1.Soldi := 4.54;
Titolo: Re:Editare TBufDataset
Inserito da: xinyiman - Gennaio 24, 2014, 02:22:43 pm
Lascia perdere ho capito, il problema era che c'era una funzione che scorreva il dataset mentre io provavo a scriverci sopra. Panico e paura