如何将面板onclick数据显示到dbgrid以及如何将dbgrid数据保存到Canteen计费软件的表中

时间:2013-09-12 06:58:11

标签: delphi onclick displaytag panels dbgrid

我正在开发自助服务亭食堂计费软件,该计算软件可以对食堂的物品进行计费。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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