2015-03-03 1 views
1

Итак, в основном я уже некоторое время работаю над своим вычислительным проектом, и у меня есть 90% его работы, однако у меня проблема с Delphi, где говорится, что моя база данных не подключена/есть проблема с подключением, однако я уже пробовал записывать информацию на экран, и это показало мне, что предметы, которые я собирался забрать, на самом деле собираются, поэтому сбой возникает, когда элементы вводятся в базу данных. Это, однако, не должно происходить, поскольку у системы уже есть информация о базе данных, отображаемая из этой таблицы, и пользователь может физически выбирать вещи из таблиц базы данных в программе, однако, пытаясь сохранить информацию обратно в базу данных, она просто ломается. Я и мой преподаватель по вычислительной технике не могут это решить, любая помощь будет оценена по достоинству.Подключение к базе данных Delphi с использованием соединений ACCESS и ADO

Проблема появляется на странице новых заказов. Если вы не хотите смотреть на систему, то вы можете скачать его здесь 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; 

ответ

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;