Delphi 使用 ACCESS 和 ADO 连接的数据库连接

Delphi Database Connection Using ACCESS and ADO connections

好吧,基本上我已经在我的计算项目上工作了一段时间,我已经完成了 90% 的工作,但是我遇到了 Delphi 的问题,其中说我的数据库未连接/连接有问题,但是我已经尝试将信息写入屏幕,这表明我想要拾取的物品实际上被拾取了,所以失败是在输入物品时入数据库。然而,这不应该发生,因为系统已经从 table 中显示了数据库信息,并且用户可以在程序中从数据库 tables 物理地 select 东西但是当试图存储时信息返回到它刚刚中断的数据库中。我和我的计算机老师无法解决,任何帮助将不胜感激。

问题出现在新订单页面上。如果您想查看系统,则可以从此处下载 https://drive.google.com/folderview?id=0B_iRfwwM9QpHVXJnSkx4U1FjMlk&usp=sharing

procedure Tform1.btnSaveClick(Sender: TObject);
var orderID:integer;
count:integer;
begin
  try
    //save into the order table first
    tblOrder.Open;
    tblOrder.Insert;
    tblOrder.FieldByName('CustomerID').value:= strtoint(cboCustomer.Text);
tblOrder.Close;
tblOrder.Open;
tblOrder.Last;
orderID:=tblOrder.FieldByName('OrderID').Value;
showmessage(inttostr(orderID));


for count := 1 to nextFree-1 do
 begin
    if itemOrdered[count,1]<>0 then
    begin
      tblOrderLine.Open;
      tblOrderLine.AppendRecord([orderID, itemOrdered[count,1],itemOrdered[count,2]]);
    end;
  end;
showmessage('The order has been saved');
  except
       showmessage('There was a problem connecting to the database');
  end;
end;

你做的太多了打开,做点什么,关闭,打开。不要那样做,因为几乎可以肯定这就是问题的原因。如果数据已经显示,则数据库已经打开。如果你想让它继续显示,数据库必须保持打开状态。

我也删除了你的try..except。如果你愿意,你可以把它放回去;我个人喜欢允许异常发生,这样我就可以从异常消息中找出数据库操作失败的原因,而不是隐藏它并且不知道是什么原因导致它不起作用。

procedure Tform1.btnSaveClick(Sender: TObject);
var 
  orderID: integer;
  count: integer;
begin
  //save into the order table first
  tblOrder.Insert;
  tblOrder.FieldByName('CustomerID').value:= strtoint(cboCustomer.Text);
  tblOrder.Post;
  orderID:=tblOrder.FieldByName('OrderID').Value;
  showmessage(inttostr(orderID));

  for count := 1 to nextFree-1 do
  begin
    if itemOrdered[count, 1] <> 0 then
    begin
      tblOrderLine.AppendRecord([orderID, itemOrdered[count,1],itemOrdered[count,2]]);
      tblOrderLine.Post;
    end;
  end;
  showmessage('The order has been saved');
end;