我正在开发自助服务亭食堂计费软件,该计算软件可以对食堂的物品进行计费。
我在数据库中有两个表,一个是菜单,另一个是用户 这些项目显示在面板上,这些面板根据记录计数动态创建。当用户单击面板时,需要将该项添加到dbgrid。
最后,必须根据'userid'将账单保存到表格中。
简而言之;我希望当用户单击面板时,其价格的项目将显示在dbgrid上。此外,我希望使用设计中的保存按钮将帐单保存到表格中。
我有以下表格;
1。)dbo.Menu,列为Menu_index,Item_Name,Item_Price。
2。)dbo.Users列有UserId,UserName,UsrPwd,Status。
3。)dbo.Tran_details包含列Menu_index,Menu_id,Item_price。
4。)dbo.Tran_header,列为Menu_index,Date,UserID。
我所做的编码是这样的(下图),但我仍然坚持这一点。任何方法或示例编码都将受到赞赏。
提前致谢。
procedure TfrmMenu.FormCreate(Sender: TObject);
begin
with DMCanteen do
begin
QryMenu.Close;
QryMenu.SQL.Clear;
QryMenu.SQL.Add('select Menu_Index,Item_Name,Item_Price from MENU');
QryMenu.Open;
SetLength(arrmenu, QryMenu.recordCount);
SetLength(arrmenuid, QryMenu.recordCount);
SetLength(arritemprice, QryMenu.recordCount);
i := 0;
QryMenu.First;
while not QryMenu.Eof do
begin
arrmenu[i] := QryMenu.FieldByName('Item_Name').AsString;
arrmenuid[i] := QryMenu.FieldByName('Menu_Index').AsInteger;
arritemprice[i] := QryMenu.FieldByName('Item_Price').AsString;
QryMenu.Next;
inc(i);
end;
showmessage(Inttostr(QryMenu.recordcount));
CreateButtons(QryMenu.recordcount, 5, Panel1);
end;
end;
答案 0 :(得分:0)
在我看来,您需要两个不同的数据集(我强烈建议您使用TClientDataset
):一个包含所有产品,另一个包含订购产品。
单击给定面板时,必须访问相应的记录,以便为您提供产品详细信息,以便在订单数据集中添加新记录。在我看来,您的DBGrid将链接到订单数据集,因此无论何时向该数据集添加记录,DBGrid都将自动更新以显示它。
这里有一个提示:在使用Delphi中的数据软件组件时,不要考虑网格或编辑,而应考虑数据集。可视组件的存在只是为了让GUI处理数据。数据存储在数据集中。更新数据集后,可视组件将显示它!
因此,我建议您设计解决方案以使用两个数据集,一个作为产品目录,另一个作为产品订单。在目录数据集中选择产品后,相应的记录将插入到订单数据集中。通过将数据软件组件正确链接到正确的数据集,GUI将显示您想要的内容。