powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
12 сообщений из 12, страница 1 из 1
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784616
Foxhound25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Помогите решить следующую проблему:
Получаю данные запросом
Код: sql
1.
2.
3.
4.
select ASch.id1, tbNalog.idSection, tbNalog.flagDTKT, ASch.idSchetSubSchet, ASch.kodAPrizSchet, ASch.nameAPrizSchet
from tbNalog
  right join tbSprAPrizSchet ASch on ASch.id1 = tbNalog.id1
where ASch.idSchetSubSchet = :idSchetSubSchet

,
и отображаю в гриде, в котором мне и нужно их редактировать.
Но загвоздка в то что в запросе 2 связанные по схеме "1 к 1 необязательно" таблицы, редактировать нужно данные 2-ой таблицы(которых может и не быть).
И когда редактирую запись датасета к которой нет записи во 2-ой таблице выпадает ошибка:
Код: pascal
1.
Exception class EOleException with message 'Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения'.

, то-есть Query пытается сделать update записи которой нет.
И в таком случае мне нужно что бы Query делал insert. Как это реализовать?
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784629
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foxhound25,

только отдельным запросом(-сами).
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784647
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запросом update or insert например

http://firebirdsql.su/doku.php?id=update_or_insert
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784654
Foxhound25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch, запросы update и insert я умею писать, но как быть с тем что Query сам пытается обновить и получаем ошибку, не могу догнать?
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784657
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foxhound25но как быть с тем что Query сам пытается обновитьПрисвойте ему UpdateObject
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784659
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784660
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Foxhound25но как быть с тем что Query сам пытается обновитьПрисвойте ему UpdateObject

а нет такого
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/!!MEMBEROVERVIEW_ADODB_TADOQuery.html

это вам не BDE, это Microsoft ADO

впрочем, можно попытаться в потомке перекрыть http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/ADODB_TCustomADODataSet_PSUpdateRecord@TUpdateKind@TDataSet.html]http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/ADODB_TCustomADODataSet_PSUpdateRecord@TUpdateKind@TDataSet.html - вдруг сработает
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784664
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochили например http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/DB_TDataSet_BeforePost.html

в 2003 именно так советовали, вряд ли много изменилось
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784790
Foxhound25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochFoxhound25,

самое "на поверхности" - сделать руками

например http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/DB_TDataSet_OnPostError.html
... добавил insert на OnPostError
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TMainForm.APrizSchetQPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
  if E is EDatabaseError then
  begin
    AddNalog.Parameters.ParamByName('id1').Value := DataSet.FieldByName('id1').Value;
    AddNalog.Parameters.ParamByName('idSection').Value := DataSet.FieldByName('idSection').Value;
    AddNalog.Parameters.ParamByName('flagDTKT').Value := DataSet.FieldByName('flagDTKT').Value;
    AddNalog.Execute;
    DataSet.Close;
    DataSet.Open;
    Action := daAbort;
  end
  else
    Action := daFail;
end;

, но осталась проблема что мне нужно получить эту вставленную в таблицу запись в DataSet'е, как лучше это сделать(CloseOpen как то не очень)? Спасибо )
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784834
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foxhound25,

там есть всякие методы типа update record, refresh record - экспериментируйте, проверяйте, код на Expert-exchange сравните со своим, может быть там что-то есть про обновление
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39784892
Bali
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Foxhound25,
А свойства у квери не пробовали установить:
Код: sql
1.
2.
3.
4.
AddNalog.properties['Update Criteria'].Value := adCriteriaUPDCols;
AddNalog.properties['Update Resync'].Value := adResyncAll;
AddNalog.Properties['Unique Table'].Value := 'tbNalog';
AddNalog.Properties['Resync Command'].Value := 'Select * from tbNalog where (KeyID = ?) and (KeyID2 = ?) and (KeyIDn = ?)';	


KeyID - первичные ключи таблицы tbNalog.
...
Рейтинг: 0 / 0
Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
    #39789087
Foxhound25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, особенно Arioch. Много нового для себя узнал чего Ado может- чего не может. В игоге совсем по другому задачу решил!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как заPost-тить данные на AdoQuery с двумя связанными "1 к 1 необязательно" таблицами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]