[ erekoz @ 24.09.2003. 17:37 ] @

Pozdrav svima,

Kako u kodu izaberem sve sto iz baze ucitam u DBgrid? Npr, ako ucitam gomilu integera u dBgrid, kako bih mogao da ih izvucem u niz?

Unapred zhvalan, erekoz
[ bogiboy @ 24.09.2003. 18:44 ] @
Iteriraj kroz dataset i dodaj vrednost polja u niz.
[ erekoz @ 24.09.2003. 19:17 ] @

Hajde samo malo detaljnije, molim te...
[ freelancer @ 24.09.2003. 21:15 ] @
Podatke mozes direktno da ocitavas iz DataSeta npr. na sledeci nacin:

Code:
DBGrid.DataSource.DataSet.Fields[x].Text

U svakom slucaj potrazi u helpu TDataSet za sve property-je i metode.
[ byTer @ 24.09.2003. 22:49 ] @
Ili probaj jednostavno iz Data Seta (posto sa dbgridom moze da bude malo komplikovanije).

Pustis petlju
repeat

code za pravljenje niza

until RS.EOF
[ bogiboy @ 07.10.2003. 00:00 ] @
Ako trebas da pokupis integere iz recordseta mozes sa TStringList
procedure GetFieldsToArray(rst:TDataSet;fld:TField):TStringList;
var
lst:TStringList;
begin
if not rst.Active then rst.active := True;
if not rst.FindField(fld) then exit;
lst := TStringList.Create;
rst.First;
while not rst.EOF do
begin
lst.Add(rst.FieldByName(fld.FieldName).AsString);
rst.Next;
end;
result := lst;


end;

a mozes i da kreiras niz umesto lst
var
arr : array of Integer;
iCount, i :Integer;
begin
iCount := rst.RecordCount;
SetLength(arr,iCount);
for i := 0 to iCount-1 do
begin
arr := rst.FieldByname(fld.Name).AsInteger;
rst.Next;
end;
[ Nub.Saibot @ 07.10.2003. 08:57 ] @
Citat:
bogiboy:

a mozes i da kreiras niz umesto lst
var
arr : array of Integer;
iCount, i :Integer;
begin
iCount := rst.RecordCount;
SetLength(arr,iCount);
for i := 0 to iCount-1 do
begin
arr := rst.FieldByname(fld.Name).AsInteger;
rst.Next;
end;


Nije moguce kod svih baza raditi sa RecordCount posto on kod nekih (za Interbase znam sigurno) ne vraca ukupan broj redova vec samo koliko je trenutno povuceno iz baze, a to je kod upita sa vecim rezultatom uvek manje od ukupnog broja redova.

P.S. Znam da je bogiboy ovo naveo samo kao primer, ali za svaki slucaj :)

Pozdrav