2016-10-27 4 views
-6

Я ищу решение довольно серьезной проблемы, с которой я сталкиваюсь; Я хочу удалить запись в dbGrid, но когда я нажимаю на свою закодированную кнопку и подтверждаю «Удалить», я не нахожу немедленных результатов. Чтобы найти результат удаленной записи, мне нужно закрыть программу и повторно запустить ее. Только после этого я вижу, что запись удалена.Удаление записей в dbGrid Delphi 2010

Моего кодирование выглядит в основном следующим образом

procedure TfrmPunte.btnDeleteClick(Sender: TObject); 
var 
sName, sLeerderNo : string; 
begin 
with dmPunte do 
    begin 
    sLeerderNo := tblLeerder['LeerderNr']; 
    sName := tblLeerder['NaamVan']; 
    if MessageDlg('Is jy seker dat jy ' + sName + ' met Leerder Nommer ' + sLeerderNo + ' wil wis van die rekords? Neem kennis dat al die rekords van sy/haar aktiwiteite ook uitgevee sal word!', mtWarning, [mbOk, mbCancel],0) = mrOK then 
     tblDeelname.Open; 
     tblDeelname.First; 
     while NOT tblDeelname.Eof do 
     begin 
      if tblDeelname['LeerderNr'] = sLeerderNo then 
      tblDeelname.Delete; 
      tblDeelname.Next; 
     end; 
     tblLeerder.Delete; 
     tblLeerder.Active := False; 
     tblLeerder.Active := True; 
    end; 
end; 

Я использую таблицу ADO, подключенную к ADO соединения, подключенное к базе данных ACCESS. Я делаю appologize, некоторые имена переменных находятся на африкаанс. Что мне делать?

+0

Запись, которая должна была быть удалена, по-прежнему отображается в сетке db, я использую таблицу ADO с подключением ADO. –

+2

В кратком виде: следующее после удаления пропустит одну запись после удаления записи. Вы должны вставить else перед следующим –

+0

Я полагаю, что «tblLeerder» и «tblDeelname» являются одновременно и TADODataSet, и в сетке отображается содержимое «tblDeelname». Затем вам нужно включить actice: = false и active: = true после tblDeelname.delete. Если tblLeerder подключен к DBGrid, вопрос в том, что вы хотите видеть? –

ответ

0

Table.refresh не работает в каждой среде. Безопасный путь:

Table.Active := False; 
Table.Active := True; 

Следует учитывать, что фактический набор данных утерян. Вы можете сохранить его и вернуться обратно.

+0

Благодарим вас за консультацию Кристин, я попробовал, но, к сожалению, она все еще не работает. –

+1

Чем больше вы должны быть конкретнее. Пожалуйста, покажите нам полный код (какой тип таблицы?). Что означает delete в dbgrid? Я бы понял: удалить запись в наборе данных и обновить dbgrid ??? –

+0

Я добавил свой код в ответы Кристин, большое спасибо за всю вашу помощь. –

Смежные вопросы