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

Вниз

База данных на FoxPro   Найти похожие ветки 

 
TAN_K   (2006-02-17 15:19) [0]

Господа , есть база на FoxPro , в таблице необходимо удалить запись , параметры которой предварительно выбрала из базы созданной в Expert (Baza.gdb) . Вопрос - где и что неправильно делаю ,
Query3.Close;
 Query3.SQL.Clear;
 Query3.SQL.Add("Select * from F_LKART.DBF where (STRAXN =  :P0)");
 Query3.SQL.Add("and (FAM = :P1) and (IM = :P2) and (OT = :P3)");
 Query3.Params[0].AsString := IBQuery1["STRAXN"];
 Query3.Params[1].AsString := IBQuery1["FAM"];
 Query3.Params[2].AsString := IBQuery1["IM"];
 Query3.Params[3].AsString := IBQuery1["OT"];
 Query3.ExecSQL;
 Query3.Close;
 Query3.Open;
Query3.Edit;
UpdateSQL1.SetParams(ukDelete);
UpdateSQL1.ExecSQL(ukDelete);
// UpdateSQL1.Apply(ukDelete);
На операторе UpdateSQL1.ExecSQL(ukDelete) дает ошибку - Update failed .

Всем спасибо .


 
Sergey13 ©   (2006-02-17 15:24) [1]

Query3.Close;
Query3.SQL.Clear;
Query3.SQL.Add("Delete from F_LKART.DBF where (STRAXN =  :P0)");
Query3.SQL.Add("and (FAM = :P1) and (IM = :P2) and (OT = :P3)");
Query3.Params[0].AsString := IBQuery1["STRAXN"];
Query3.Params[1].AsString := IBQuery1["FAM"];
Query3.Params[2].AsString := IBQuery1["IM"];
Query3.Params[3].AsString := IBQuery1["OT"];
Query3.ExecSQL;


 
TAN_K   (2006-02-17 15:42) [2]

Не удаляет !
Я так уже пробовала , и после вашего совета - эффект тот же , не хватает какай-то мелочи .


 
Johnmen ©   (2006-02-17 15:45) [3]

Это гремучая мешанина из двух способов удаления, из набора данных и с помощью прямого запроса, естественно работать не может.
Следовательно, надо разобраться с каждым вариантом отдельно...


 
Sergey13 ©   (2006-02-17 15:49) [4]

2[2] TAN_K   (17.02.06 15:42)
>Не удаляет !
Возможно просто не находит запись, потому что регистр буковок разный. И зачем ФИО вообще в параметрах? Страхового номера, ИМХО, вполне достаточно, он же должен быть уникальным.
(если я правильно телепатироал названия полей 8-)


 
TAN_K   (2006-02-17 17:25) [5]

Регистр одинаковый , ФИО необходимо , т.к. страх № может не быть (такие ситуации бывают) .
Решила провести эксперимент на удаление - сделала такой запрос :
Query3.Close;
Query3.SQL.Clear;
Query3.SQL.Add("Delete from F_LKART.DBF);  
Query3.ExecSQL;

выдает сообщение - Cursor ....

все записи в таблице FoxPro - F_LKART.DBF оказались помеченными на удаление , таблицу необходимо сжать , в FoxPro есть оператор Pack , есть ли что-то подобное в Delphi .


 
Sergey13 ©   (2006-02-20 09:19) [6]

2[5] TAN_K   (17.02.06 17:25)
>Регистр одинаковый , ФИО необходимо , т.к. страх № может не быть (такие ситуации бывают) .
Есть еще такое понятие в БД как ключ. Бывают ключи первичные, альтернатвные, внешние. Тебе наверное надо почитать про это.


 
КаПиБаРа ©   (2006-02-20 09:32) [7]

TAN_K   (17.02.06 17:25) [5]
Для начала нужно отладить запрос на удаление. Для этого к запросу приведенному в [0], тот который с селект подключи DBGrid. Вместо удаления, строки будут отображаться и можно будет проверить правильность работы выборки.
После отладки Select заменяется на Delete


 
Desdechado ©   (2006-02-20 10:08) [8]

Query3.ExecSQL;
Query3.Close;
Query3.Open;

кажется несколько странным, что без изменения текста запроса делается сначала ExecSQL, а затем Open



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

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

Наверх




Память: 0.48 MB
Время: 0.04 c
15-1139314571
БарЛог
2006-02-07 15:16
2006.03.05
FreeBSD


15-1139516547
Bogdan1024
2006-02-09 23:22
2006.03.05
помогите придумать тему для программы


2-1140026301
Корешь
2006-02-15 20:58
2006.03.05
Массив из записей как с ним работать?


9-1126006488
Trion
2005-09-06 15:34
2006.03.05
Вот захотел сделать игрушку типа 2d шутер с чего начать не знаю


9-1126088442
Signate
2005-09-07 14:20
2006.03.05
Движек