Select GRUNT1.*,GRUNT2.*,GRUNT3.*
From GRUNT1,GRUNT2,GRUNT3
Where GRUNT1.P0______ = GRUNT2.P0______
AND GRUNT1.P0______ = GRUNT3.P0______
AND GRUNT1.deleted <> "*"
AND GRUNT2.deleted <> "*"
AND GRUNT3.deleted <> "*"
не удалить запись...
Использую ADOConnection->ADOQuery->DATASource ->DBNavigator.
Когда в Query пишу SQL=
Select *from GRUNT1.dbf
-все нормально.
Когда SQL=
Select GRUNT1.*,GRUNT2.*,GRUNT3.*
From GRUNT1,GRUNT2,GRUNT3
Where GRUNT1.P0______ = GRUNT2.P0______
AND GRUNT1.P0______ = GRUNT3.P0______
- по нажатию на кнопку "-"(удалить) DBнавигатора выдается ошибка: "недостаточно сведений ключевого поля для обновления." Что делать???
Цитата:
Originally posted by IreneSPb
Три таблицы dbf3.Индексы по полю P0_____ у всех.
Использую ADOConnection->ADOQuery->DATASource ->DBNavigator.
Когда в Query пишу SQL=
Select *from GRUNT1.dbf
-все нормально.
Когда SQL=
Select GRUNT1.*,GRUNT2.*,GRUNT3.*
From GRUNT1,GRUNT2,GRUNT3
Where GRUNT1.P0______ = GRUNT2.P0______
AND GRUNT1.P0______ = GRUNT3.P0______
- по нажатию на кнопку "-"(удалить) DBнавигатора выдается ошибка: "недостаточно сведений ключевого поля для обновления." Что делать???
Три таблицы dbf3.Индексы по полю P0_____ у всех.
Использую ADOConnection->ADOQuery->DATASource ->DBNavigator.
Когда в Query пишу SQL=
Select *from GRUNT1.dbf
-все нормально.
Когда SQL=
Select GRUNT1.*,GRUNT2.*,GRUNT3.*
From GRUNT1,GRUNT2,GRUNT3
Where GRUNT1.P0______ = GRUNT2.P0______
AND GRUNT1.P0______ = GRUNT3.P0______
- по нажатию на кнопку "-"(удалить) DBнавигатора выдается ошибка: "недостаточно сведений ключевого поля для обновления." Что делать???
Можно просто плюнуть. ADO с dBase работает плохо. Она просто на самом деле не понимает формат индексных файлов, но это не мешает работать корректно.
Цитата:
Originally posted by AlexandrVSmirno
Можно просто плюнуть. ADO с dBase работает плохо. Она просто на самом деле не понимает формат индексных файлов, но это не мешает работать корректно.
Можно просто плюнуть. ADO с dBase работает плохо. Она просто на самом деле не понимает формат индексных файлов, но это не мешает работать корректно.
Так как работать корректно-то? И как можно сжать таблицу после удаления?
Цитата:
Originally posted by IreneSPb
Так как работать корректно-то? И как можно сжать таблицу после удаления?
Так как работать корректно-то? И как можно сжать таблицу после удаления?
1. Уберите индексы вообще
2. На сколько я знаю аналога команды pack нет
Цитата:
Originally posted by AlexandrVSmirno
1. Уберите индексы вообще
2. На сколько я знаю аналога команды pack нет
1. Уберите индексы вообще
2. На сколько я знаю аналога команды pack нет
Тогда корректно не поработаешь - после переоткрытия помеченные на удаление записи отсвечиваются в DBEdit-ах....
Цитата:
Originally posted by IreneSPb
Тогда корректно не поработаешь - после переоткрытия помеченные на удаление записи отсвечиваются в DBEdit-ах....
Тогда корректно не поработаешь - после переоткрытия помеченные на удаление записи отсвечиваются в DBEdit-ах....
Могу и ошибатьс, но помоему так:
Код:
Цитата:
Originally posted by AlexandrVSmirno
Могу и ошибатьс, но помоему так:
Могу и ошибатьс, но помоему так:
Код:
Select GRUNT1.*,GRUNT2.*,GRUNT3.*
From GRUNT1,GRUNT2,GRUNT3
Where GRUNT1.P0______ = GRUNT2.P0______
AND GRUNT1.P0______ = GRUNT3.P0______
AND GRUNT1.deleted <> "*"
AND GRUNT2.deleted <> "*"
AND GRUNT3.deleted <> "*"
From GRUNT1,GRUNT2,GRUNT3
Where GRUNT1.P0______ = GRUNT2.P0______
AND GRUNT1.P0______ = GRUNT3.P0______
AND GRUNT1.deleted <> "*"
AND GRUNT2.deleted <> "*"
AND GRUNT3.deleted <> "*"
Не... выдает при попытке активизации - Слишком мало параметров,требуется 1
Цитата:
Originally posted by IreneSPb
Тогда корректно не поработаешь - после переоткрытия помеченные на удаление записи отсвечиваются в DBEdit-ах....
Тогда корректно не поработаешь - после переоткрытия помеченные на удаление записи отсвечиваются в DBEdit-ах....
Можно настроить в ODBC администраторе->User DSN->Options ->Show Deleted Rows (checkbox отключить)
Кроме этого можно определить обработчик OnException события TApplication, что то типа и упрощенно
Код:
void __fastcall TForm1::AppException(TObject *Sender, Exception *E)
{
if(Exception->Message=="недостаточно сведений ключевого поля для обновления") // возможно по-английски
{
Query->SQL = "DELETE FROM GRUND1 WHERE PO=xxx";
Query->ExecSQL;
Query->SQL = "DELETE FROM GRUND2 WHERE PO=xxx";
Query->ExecSQL;
Query->SQL = "DELETE FROM GRUND3 WHERE PO=xxx";
Query->ExecSQL;
}
}
{
if(Exception->Message=="недостаточно сведений ключевого поля для обновления") // возможно по-английски
{
Query->SQL = "DELETE FROM GRUND1 WHERE PO=xxx";
Query->ExecSQL;
Query->SQL = "DELETE FROM GRUND2 WHERE PO=xxx";
Query->ExecSQL;
Query->SQL = "DELETE FROM GRUND3 WHERE PO=xxx";
Query->ExecSQL;
}
}
В OnCreate событии формы, если она создается динамичемки написать
Application->OnException = AppException;
В OnClose событии формы написать
Application->OnException = NULL;