Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизБаза данных на 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c