Rin*_*iks -1 database delphi dbgrid
问题
我有DBGdrid并且有ID's从 MS Access 数据库显示的列。如何将它们更改为真实值,例如item name, client name, employee name?
我有代码(测试代码,我只是尝试从表中获取所有项目名称,我可以将它们保存到数组或变量中,并更改DBGrid显示 id 的值),但我不知道如何更改DBGrid值字段。
procedure TForm2.Button1Click(Sender: TObject);
var i,j:integer; mas:string;
begin
Button1.Enabled := false;
Button2.Enabled := true;
Button3.Enabled := true;
Form1.ADOQuery1.SQL.Text := 'SELECT * FROM items_specification';
Form1.ADOQuery1.Open;
j:= Form1.ADOQuery1.RecordCount;
Form1.ADOQuery1.Close;
i:=1;
repeat
Form1.ADOQuery1.SQL.Text := 'SELECT * FROM items_specification WHERE item_id = :ID';
Form1.ADOQuery1.Parameters.ParamByName('ID').Value := i;
Form1.ADOQuery1.Open;
mas:= Form1.ADOQuery1['item_name'];
Form1.ADOQuery1.Close;
inc(i);
ShowMessage(mas) ;
until (i = j+1);
Run Code Online (Sandbox Code Playgroud)
也许您对如何解决问题有任何建议,我将不胜感激。
在 MS Access 中,我已经查找以在那里显示名称,mby 有什么方法可以做到这一点DBGrid吗?
更新
但是代码并不重要..我的大问题是如何在DBGrid(值而不是列标题中)设置项目名称、客户名称和员工名称?!在 MS Access 中,id 是数字的那些字段,所以即使我编辑DBGrid它也不允许我将值更改为字符串.. 我能想象的唯一方法是破坏 MS Access 中的关系并将字段更改为ShortText,但我认为不是最好的方法。
要在DBGrid单元格中显示实际上不在您的数据库中的值,您可以添加一个calculated field.
您双击源:ADOQuery1并将您想要的所有字段添加到可用字段列表中。然后添加一个新字段。
(我将其他字段留空,因为我很懒,但您应该确保添加数据库中要列出的所有字段)
您根据需要设置属性(不要忘记对话框中间的单选按钮)。
在您的表单中,将添加一个与您在Name框中指定的名称(以数据集名称为前缀)匹配的新字段。
然后双击OnCalcFields数据集 ( ADOQuery1)的事件并插入代码以填充计算字段,例如:
procedure TForm44.ADOQuery1CalcFields(DataSet: TDataSet);
begin
ADOQuery1ExampleCalc1.AsString:= 'Prefix:'+DataSet.FieldByName('Field1').AsString;
ADOQuery1ExampleCalc2.AsInteger:= DataSet.FieldByName('Amount').AsInteger+100;
end;
Run Code Online (Sandbox Code Playgroud)
注意
如果你显示很多行,你会发现它可能显示很慢。在这种情况下,将 替换为FieldByName实际的字段引用,例如ADOQuery1Field1。
FieldByName 每次被调用时都会进行查找,这会减慢速度。
注意 2
您还可以在 OnCalcFields 事件中组合来自 2 个数据库表的数据,但要注意该事件会为显示的每一行调用一次,因此请确保您的查找是快速的。
如果不是,更改查询中的 SQL 语句可能是一个更好的主意。
进一步阅读
请参阅此处(如果您想在运行时执行此操作):在运行时向查询添加计算字段
这是官方文档:http : //docwiki.embarcadero.com/RADStudio/Seattle/en/Defining_a_Calculated_Field
示例代码:http : //docwiki.embarcadero.com/RADStudio/Seattle/en/Programming_a_Calculated_Field
| 归档时间: |
|
| 查看次数: |
5891 次 |
| 最近记录: |