Function 使用数据库项作为函数参数

Function 使用数据库项作为函数参数,function,delphi,adoconnection,Function,Delphi,Adoconnection,我正在使用Delphi访问我的pgsql数据库,使用以下组件: ADOQuery、ADOConnection、DataSource和DBGrid 我已经看到在TStringGrid(而不是DBGrid)中显示数据很方便,因此我也使用以下代码: procedure TForm2.StringGrid1Click(Sender: TObject); var x,y: integer; begin StringGrid1.ColCount := DBGrid1.Columns.Count;

我正在使用Delphi访问我的pgsql数据库,使用以下组件:

ADOQuery、ADOConnection、DataSource和DBGrid

我已经看到在TStringGrid(而不是DBGrid)中显示数据很方便,因此我也使用以下代码:

procedure TForm2.StringGrid1Click(Sender: TObject);
var
  x,y: integer;
begin
  StringGrid1.ColCount := DBGrid1.Columns.Count;
  StringGrid1.RowCount := DBGrid1.DataSource.DataSet.RecordCount+1;
  StringGrid1.FixedCols := 0;
  for y := 0 to DBGrid1.Columns.Count-1 do
    StringGrid1.Cells[y, 0] := DBGrid1.Columns[y].Title.Caption;
  x := 1;
  DBGrid1.DataSource.DataSet.DisableControls;
  DBGrid1.DataSource.DataSet.First;

  while not DBGrid1.DataSource.DataSet.Eof do
  begin
    for y := 0 to DBGrid1.Columns.Count-1 do
      StringGrid1.Cells[y,x] :=                                
        DBGrid1.DataSource.DataSet.FieldByName(DBGrid1.Columns[y].FieldName).AsString;
    inc(x);
    DBGrid1.DataSource.DataSet.Next;
  end;
  DBGrid1.DataSource.DataSet.EnableControls;
end;   
数据库分别有两列G和T数据。 现在,在另一个项目中,我制作了许多设置G、T参数的函数,如下所示:

 function FindSomething(G, T:double):double;

我想问的是,如何将上述数据库列中的单元格条目用作函数的G,T参数?我是个新手,一路上都很棘手。非常感谢您的帮助。

您必须读取单元格内容,并使用
StrToFloat
将其转换为双精度格式。(如果使用TDBGrid操作正确,您可以只使用字段的
AsFloat
属性,但是使用TStringGrid,数据和网格之间没有连接,因此无法工作。)此代码看起来可以用于两条记录,但两条以上的记录看起来无法工作。在循环中增加行数时,行和列需要两个嵌套循环,而列不需要一个嵌套循环。但是肯说的是正确的。我唯一的问题是,G和T真的是双倍的吗?或者它们是对应于行/列位置的整数?不清楚您搜索的是包含值的单元格(行/列),还是给定单元格中的值。我明白了,谢谢。G,T是双精度的,是我需要输入到函数中的值。你认为最好的方法是把我的列放到二维的双精度数组中,然后从那里开始运行我的函数吗?我想了想,这似乎更合理。