0

我正在开发信息亭食堂计费软件,该软件可以对食堂的物品进行计费。

我在数据库中有两张表,一张带有菜单,另一张带有用户。
这些项目显示在根据记录数动态创建的面板上。当用户单击面板时,需要将项目添加到 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;
4

1 回答 1

0

在我看来,您需要两个不同的数据集(我强烈建议您使用TClientDataset):一个包含所有产品,另一个包含订购的产品。

单击给定面板时,必须访问相应的记录,以便为您提供产品详细信息以在订单数据集中添加新记录。在我看来,您的 DBGrid 将链接到订单数据集,因此每当您向该数据集添加记录时,DBGrid 将自动更新以显示它。

这里有一个提示:在 Delphi 中使用数据件组件时,不要考虑网格或编辑,而要考虑数据集。可视化组件的存在只是为了让 GUI 处理数据。数据存储在数据集中。当数据集更新时,可视化组件将显示它!

因此,我建议您设计解决方案以使用两个数据集,一个作为产品目录,另一个作为产品订单。在目录数据集中选择产品时,将在订单数据集中插入相应的记录。将数据件组件正确链接到适当的数据集后,GUI 将显示您想要的内容。

于 2013-09-12T19:00:41.473 回答