好的,基本上我已经在我的计算项目上工作了一段时间,而且我已经有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;
答案 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;