![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
(Delphi+ADO+Postgresql)
Как менять/добавлять/удалять данные в БД через DBGrid. Тоесть нажал на поле DBGrida, редактировал значение и изменения сохранились в бд. Поставил курсор на строке, удалил её из DBGrida и в бд она тоже удалилась. Создал пустую строку, заполнил ячейки данными и сохранил. Вот как-то так. Вроде говорят через DataSet, кто-нибудь может пару строчек кода, как пример показать ? |
|
#2
|
|||
|
|||
|
Код:
procedure TForm5.N1Click(Sender: TObject);
begin
IF DBGrid1.DataSource=Form1.DataSource1 then
Form1.ADOTable1.Append;
IF DBGrid1.DataSource=Form1.DataSource2 then
Form1.ADOTable2.Append;
IF DBGrid1.DataSource=Form1.DataSource3 then
Form1.ADOTable3.Append;
IF DBGrid1.DataSource=Form1.DataSource4 then
Form1.ADOTable4.Append;
end;
procedure TForm5.N2Click(Sender: TObject);
begin
If Application.MessageBox('Вы действительно хотите удалить эту запись','!!!Внимание!!!',MB_OKCANCEL)=id_OK then
begin
IF DBGrid1.DataSource=Form1.DataSource1 then
Form1.ADOTable1.Delete;
IF DBGrid1.DataSource=Form1.DataSource2 then
Form1.ADOTable2.Delete;
IF DBGrid1.DataSource=Form1.DataSource3 then
Form1.ADOTable3.Delete;
IF DBGrid1.DataSource=Form1.DataSource4 then
Form1.ADOTable4.Delete;
end;
end;
procedure TForm5.Button1Click(Sender: TObject);
begin
IF DBGrid1.DataSource=Form1.DataSource1 then
begin
if Form1.ADOTable1.Modified then Form1.ADOTable1.Post;
end;
IF DBGrid1.DataSource=Form1.DataSource2 then
begin
if Form1.ADOTable2.Modified then Form1.ADOTable2.Post;
end;
IF DBGrid1.DataSource=Form1.DataSource3 then
begin
if Form1.ADOTable3.Modified then Form1.ADOTable3.Post;
end;
IF DBGrid1.DataSource=Form1.DataSource4 then
begin
if Form1.ADOTable3.Modified then Form1.ADOTable3.Post;
end;
end;N1Click - через popupmenu добавляю N2Click - удаляю редактируется грид сам по себе а Button1Click - кнопка сохранить |
|
#3
|
|||
|
|||
|
Ммм, такая фигня возникла, не могу ничего редактировать в ячейках DBGrida. Если подключаться через Table, то всё норм, но через него к POstgresqlю не подключишься, использую ADOConnection, ADOQuery. ReadOnly:=false, всё вроде подключено. ПОчему так ?
|
|
#4
|
||||
|
||||
|
Если запрос сложный, т.е. используется несколько таблиц связаных отношением 1:N то так и будет.
|
|
#5
|
|||
|
|||
|
Цитата:
Select * from Table ![]() |
|
#6
|
||||
|
||||
|
Мдаааа, это действительно чрезвычайно сложный запрос
![]() А ключевые поля в этой табле имеются? Сталкивался как-то с таким при отсутствии таковых тоже невозможно было редактировать, что в общем-то и понятно. |