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

时间:2015-03-03 13:13:10

标签: database delphi input connection ado

好的,基本上我已经在我的计算项目上工作了一段时间,而且我已经有90%的工作正在运行但是我在使用Delphi时遇到的问题就是我的数据库没有连接/连接有问题但是我已经尝试将信息写入屏幕,这表明我想要拿起的物品实际上被拾取,所以失败的时候物品是被输入数据库。然而,这不应该发生,因为系统已经具有从该表显示的数据库信息,并且用户可以从程序内的数据库表中物理地选择事物,但是当试图将信息存储回数据库时它刚刚中断。我和我的计算老师无法解决,任何帮助都会受到赞赏。

问题出现在新订单页面上。如果您更愿意查看系统,则可以从此处下载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;

1 个答案:

答案 0 :(得分:2)

你做得太多打开,做某事,关闭,打开。不要这样做,因为几乎可以肯定这是你问题的原因。如果数据已经显示,则数据库已经打开。如果您希望它继续显示,则数据库必须保持打开状态。

我还删除了您的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;