Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Помогите!!!! Задолбался с ADOTable   Найти похожие ветки 

 
denmin ©   (2004-03-09 10:24) [0]

Здравствуйте. Дело вот в чем. Есть программа на Delphi5, использую ADO. В гриде высвечиваются данные отфильтрованные по фильтру. На гриде есть попупменю, где одним из пунктов яв-ся удаление записи.  Удаление происходит так, в двух таблицах

Table5.Filter:="";
Table5.Open;
If Table5.Locate("docnum;docdate",VarArrayOf([Table4["docnum"],Table4["docdate"]]),[]) then
  begin
  While (not Table5.Eof)and(Table5["docnum"]=Table4["docnum"])and(Table5["docdate"]=Table4["docdate"]) do
        Table5.Delete;
  end;
Table5.Close;
Table4.Delete;

так вот все проходит а на Table4.Delete говорит "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения".
Может что не так я делаю, а может есть патч на ADO какой-нибудь?


 
Романов Р.В. ©   (2004-03-09 10:37) [1]

А так?
 While Table5.Locate("docnum;docdate",VarArrayOf([Table4["docnum"],Table4["docdate"]]),[]) do
       Table5.Delete;


 
denmin ©   (2004-03-09 10:39) [2]

2 Романов Р.В. ©
здесь та все нормально, только вот Table4.Delete это самое говорит


 
sniknik ©   (2004-03-09 10:41) [3]

самый главный глюк в ADOTable, и использовании локальных методов для sql сервера.
по "глюку" на Table4
можно предположить что ключа у таблици нет а повторяющиеся записи есть. измени чтонибудь.


 
denmin ©   (2004-03-09 10:42) [4]

прошу прощения если не понятно. короче в гриде высвечивается Table4, и из этого грида по попупменю удаляется эта запись из T4 и T5


 
Плохиш   (2004-03-09 10:45) [5]

В sniknik ©   (09.03.04 10:41) [3] были ключевые слова ключа у таблици нет. Советую над ними своей думалкой подумать.


 
denmin ©   (2004-03-09 10:55) [6]

да, ключа у таблицы нет. но неужели у каждой таблицы на сиквеле должны быть ключи? извините, если что не понимаю, но я только начинаю с сиквелом работу. а если ключи так необходимы и без них никак нельзя на SQL Server, то я так и сделаю.


 
Плохиш   (2004-03-09 10:59) [7]


> denmin ©   (09.03.04 10:55) [6]
> да, ключа у таблицы нет.

Вот сам подумай, по какому критерию должен создаться запрос на удаление записи?


 
sniknik ©   (2004-03-09 11:03) [8]

Плохиш   (09.03.04 10:45) [5]
это только один из вариантов, другой не менее вероятный
таблици связаны по FOREIGN KEY ... ON DELETE CASCADE, и удаление идет сначала с главной таблицы а после пытается с подчиненной.

но это не главное, главное как это далается, перегонять на клиента все данные чтобы просканировать и удалить пару, ... нонсенс.


 
sniknik ©   (2004-03-09 11:09) [9]

> а если ключи так необходимы и без них никак нельзя на SQL Server, то я так и сделаю.
если с таблицей работаеш то обязательны, есть варианты когда без них можно обойтись но даже в этом случае чаще добавляют поле с ключом на всякий случай.

ты лутше про sql почитай. и если сможеш сам составить запрос не используя уникального идентификатора (ключа) то значит он и не нужен, если хоть раз в работе с таблицей он понадобится то.... а от компонентов генерирующих sql команды в этом случае бедеш получать  "Не удается найти строку для обновления. ..."


 
stas ©   (2004-03-09 12:05) [10]

Если возможно, то  сделай
CursorLocation:=clUseServer
CursorType:=ctKeySet


 
sniknik ©   (2004-03-09 12:15) [11]

stas ©   (09.03.04 12:05) [10]
зачем? первое для MSSQL возникнут проблемы с букмарками если попытатся напрямую грид присоеденить (грид используется), а второе делается же полное сканирование т.е. все одно все тащится на локаль а приташить все куском как при локальном быстрее (сжатие используется) чем позаписьно (по мере надобности и несжато) как при серверном делается. и в третьих ключь от этого менее необходим не станет.

лутше сразу менять логику пока не написал большого куска который влом менять будет.


 
Stas ©   (2004-03-09 12:22) [12]

Да у меня и с ключем при локальном курсоре такие проблемы были.
Пока не поменял курсор на серверный.
А грид у меня тоже напрямую подключен.
Если знаешь как это обойти напиши.



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
7-1070785886
Delphi5.01
2003-12-07 11:31
2004.04.04
CD timeout


11-1058260237
anonymous
2003-07-15 13:10
2004.04.04
Как создать форму которая имеется в списке available forms ?


6-1075273288
frost
2004-01-28 10:01
2004.04.04
Общение по сети.


1-1079596843
SAG
2004-03-18 11:00
2004.04.04
Как узнать версию, релиз, сборку программы


4-1074477995
Newton
2004-01-19 05:06
2004.04.04
XP->Kill->Explorer