erik2000
asked on
Acccessing DBGrid1 values using an array
Hey I would like to access my DBGrid using a two dimensional array like this
TStringGrid( DBGrid1 ).Cells[1,1] but it gives me "access violation" any other way this could be done?
Thanks
Erik
TStringGrid( DBGrid1 ).Cells[1,1] but it gives me "access violation" any other way this could be done?
Thanks
Erik
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Here is Mokules suggestion wrapped in a function called Cells
function MyForm.Cells(Row, Col): String;
begin
result:= '';
MyGrid.DataSource.DataSet. First;
for i := 0 to Row - 1 do
MyGrid.DataSource.DataSet. Next;
result:= MyGrid.Columns[Col].Field. AsString;
end;
Shane
function MyForm.Cells(Row, Col): String;
begin
result:= '';
MyGrid.DataSource.DataSet.
for i := 0 to Row - 1 do
MyGrid.DataSource.DataSet.
result:= MyGrid.Columns[Col].Field.
end;
Shane
Yes,
I don't want to wrap it like this because when You want to get some cells from one row it'll be extremly ineffective ... :)
ASKER
Hmm I was thinking that DBGrid was desined for this purpose but I guess Im wrong, Im trying to:
1. Access any cells value by either an array (example [1,1] ) or by the row number/column name
2. I would be interested in reading all the values from a column or row
The method mokule used is something Im looking for but I think it will be really slow, Im working on a dbgrid that has 100k records each row has 12 fields
Is there another way to access the data other then this? Maybe directly from the ADOQuery that Im using to get the data from the sql
Thanks
Erik
1. Access any cells value by either an array (example [1,1] ) or by the row number/column name
2. I would be interested in reading all the values from a column or row
The method mokule used is something Im looking for but I think it will be really slow, Im working on a dbgrid that has 100k records each row has 12 fields
Is there another way to access the data other then this? Maybe directly from the ADOQuery that Im using to get the data from the sql
Thanks
Erik
It depends what is Your aim but I suggest StoredProcedure, ADOCommand or ADOQuery
ASKER
http://64.233.167.104/search?q=cache:J9F7R5LZUD8J:www.delphinautes.org/scripts/delphin.dll/GET%3FACTION%3DIFAQ%26NUM%3D7+dbgrid+GetEditText&hl=en&ie=UTF-8
I also found this online, but I cant access GETEDITTEXT how would I go about doing that?
Thanks
Erik
I also found this online, but I cant access GETEDITTEXT how would I go about doing that?
Thanks
Erik
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
1. Isnt there a way to do it without moving the grid?
2. How would I go about writing to the grid?
Other then that the function works great.
Also I increased the points for this question
Thanks
Erik
2. How would I go about writing to the grid?
Other then that the function works great.
Also I increased the points for this question
Thanks
Erik
Hi,
>1. Isnt there a way to do it without moving the grid?
I would use another ADOQuery component and clone the original one:
...
ADOQuery1.Open; // DBGrid is accosiated to this query
ADOQuery2.Clone(ADOQuery1) ;
...
and then will get values from ADOQuery2:
ShowMessage(GetADOQueryVal ue(ADOQuer y2,100,2)) ;
>2. How would I go about writing to the grid?
What exactly do you mean?
Regards, Geo
>1. Isnt there a way to do it without moving the grid?
I would use another ADOQuery component and clone the original one:
...
ADOQuery1.Open; // DBGrid is accosiated to this query
ADOQuery2.Clone(ADOQuery1)
...
and then will get values from ADOQuery2:
ShowMessage(GetADOQueryVal
>2. How would I go about writing to the grid?
What exactly do you mean?
Regards, Geo
ASKER
I want to write to the grid something like this SetADOQueryValue(ADOQuery2 ,1,1,"my value");
Thanks
Erik
Thanks
Erik
And you probably don't want to change the current record on DBGrid also? Assuming the current record is different from the one you're setting values to.
This is not possible. Although both components are Grids and do share some similiar hierarchy, the Cells property is introduced in the TStringGrid class declaration. It does not exist in the Hierarchy prior to TStringGrid.
Hope this Helps!
What exactly are you trying to do, maybe we can suggest an alternative method (Such as the fields array property, or the FieldByName method.
Shane