问题
我有download:
counter++
<check-download project>/mvn generate-resources
if error and counter < maxRetryCount goto download
if not error
<your project>/mvn ...
else
display appropriate error message
,并且有一些列显示来自MS Access数据库的DBGdrid
。如何将它们更改为ID's
等实际值?
我有代码(测试代码,我只是试图从表中获取所有项目名称,我可以将它们保存到数组或变量,并使用显示id的item name, client name, employee name
值更改),但我不知道如何更改DBGrid
值字段。
DBGrid
也许您对如何解决问题有任何建议,我将不胜感激。
在MS Access中,我已经查找显示名称there,有没有办法在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);
中执行此操作?
已更新
但代码并不重要..我的重要问题是如何在DBGrid
中设置项目名称,客户名称和员工姓名(在值不是列标题中)?!在MS Access中那些id为number的字段,所以如果我甚至编辑DBGrid
它不允许我将值更改为字符串..只有我能想象的方法是破坏MS Access中的关系并更改字段到DBGrid
,但我认为这不是最好的方法。
答案 0 :(得分:4)
要在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;
注意强>
如果显示多行,您会发现它可能显示缓慢。在这种情况下,将FieldByName
替换为实际的字段引用,例如ADOQuery1Field1
。
FieldByName每次调用时都会执行查找,从而减慢速度。
注2
您还可以在OnCalcFields事件中组合来自2个数据库表的数据,但请注意,对于显示的每一行,都会调用一次事件,因此请确保您的查找是快速的。
如果不是,那么更改查询中的SQL语句可能是个更好的主意。
进一步阅读
请参阅此处(如果您想在运行时执行此操作):Adding a calculated field to a Query at run time
以下是官方文档:http://docwiki.embarcadero.com/RADStudio/Seattle/en/Defining_a_Calculated_Field
示例代码:http://docwiki.embarcadero.com/RADStudio/Seattle/en/Programming_a_Calculated_Field