Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! У меня есть две таблицы-справочника: personal , smena ,и одна рабочая таблица tabel . В рабочей таблице хранятся ссылки (FK) на таблицы справочники. Для пользовательской визуализации делаю следующий запрос SQL: select tabel.id, tabel.date_tabel, tabel.id_tab_number, personal.family, personal.name, smena.name_smena, personal.tab_number from personal inner join tabel on (personal.tab_number = tabel.id_tab_number) inner join smena on (personal.id_smena = smena.id) В DBGrid на форме прекрасно отображаются не индексы, а названия. Теперь пытаюсь через TEdid организовать поиск (фильтр). Если обращаться непосредственно в реальную таблицу БД personal , то вроде фильтрует. А вот как обратиться по полю family к таблице, созданной запросом выше? Для таблицы personal делаю так: void __fastcall TFormMain::ChBFiltrPersonalClick(TObject *Sender) { // фильтр по полю try { try { // определение имени поля по которому следует искать String _find = DBGridPersonal->SelectedField->FieldName; DM->QueryPersonal->Transaction->Commit(); DM->QueryPersonal->SQL->Clear(); // выбираю данные из таблицы DM->QueryPersonal->SQL->Add("select *from personal "); if ((ChBFiltrPersonal->Checked) && (EdPersonalFilter != "")) { // если поднят флажок в чекбоксе и есть образец для поиска, то DM->QueryPersonal->SQL->Add ("where family like '" + EdPersonalFilter->Text + "%'"); DM->QueryPersonal->Active = true; } } catch (EDatabaseError& E) { CatchDBMess(E.Message); } } catch (Exception& E) { CatchExceptionMess(E.Message); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 10:42 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Oleg34А вот как обратиться по полю family к таблице, созданной запросом выше? Абсолютно так же. В чём проблема-то? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 11:35 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Oleg34, 1. В запросах в которых участвует больше одной таблицы к полям надо обращаться по полному имени, т.е. <имя таблицы>.<имя поля> 2. Используй параметры 3. Открой для себя STARTING WITH и CONTAINING ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:23 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Я пытался, но выдает ошибку: void __fastcall TFormMain::ChBTabelFilterClick(TObject *Sender) { // фильтр по полю try { // определение имени поля по которому следует искать _find = DBGridPersonalVisio->SelectedField->FieldName; DM->QueryTabelWork->Transaction->Commit(); DM->QueryTabelWork->Close(); DM->QueryTabelWork->SQL->Clear(); // выбираю данные из таблицы String SQLQuryTabel = "select tabel.id, tabel.date_tabel, tabel.id_tab_number, personal.family, personal.name, smena.name_smena, personal.tab_number from personal inner join tabel on (personal.tab_number = tabel.id_tab_number) inner join smena on (personal.id_smena = smena.id) order by "; DM->QueryTabelWork->SQL->Add(SQLQuryTabel); if ((ChBTabelFilter->Checked) && (EdTabelFiltr != "")) { // если поднят флажок в чекбоксе и есть образец для поиска, то DM->QueryTabelWork->SQL->Add("where family like '" + EdTabelFiltr->Text + "%'"); DM->QueryTabelWork->Active = true; } } catch (EDatabaseError& E) { CatchDBMess(E.Message); } } Ошибка при обращении к базе данных! Dynamik SQL Error SQL Error code =-104 То есть начиная с "where ..." вываливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:23 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Oleg34order by где, что хз.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:26 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
В запросах в которых участвует больше одной таблицы к полям надо обращаться по полному имени, т.е. <имя таблицы>.<имя поля> Я понял, но у меня нет имени этой таблицы. Она составная из запроса. В самой БД ее нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:26 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Oleg34, да и вообще ORDER BY должен быть после WHERE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:27 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Oleg34, издеваешься? Ладно будем жевать personal.family. personal это что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:29 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Oleg34Dynamik SQL Error SQL Error code =-104 Это только половина текста ошибки, да и та перевранная. Не умеешь пользоваться Ctrl-C?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:37 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Да, конечно же это лишнее!!! Но все равно запрос не обрабатывает( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:37 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
personal это таблица. personal.family это поле в этой таблице. Про запрос, я просто не стал все копировать. Но общий смысл, что не правильное обращение к where. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:42 |
|
||
|
Поиск по составной таблице
|
|||
|---|---|---|---|
|
#18+
Oleg34select tabel.id, tabel.date_tabel, tabel.id_tab_number, personal.family, personal.name, smena.name_smena, personal.tab_number from personal inner join tabel on (personal.tab_number = tabel.id_tab_number) inner join smena on (personal.id_smena = smena.id) В DBGrid на форме прекрасно отображаются не индексы, а названия. Теперь пытаюсь через TEdid организовать поиск (фильтр). Если обращаться непосредственно в реальную таблицу БД personal , то вроде фильтрует. А вот как обратиться по полю family к таблице, созданной запросом выше? Для таблицы personal делаю так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2015, 12:42 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38950503&tid=1562868]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
177ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 296ms |

| 0 / 0 |
