powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / подстановка значения вместо id
8 сообщений из 8, страница 1 из 1
подстановка значения вместо id
    #39175448
Валдис5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fb 2.5.5 SS, WinXpSp3, Delphi7, FIB+ 7.5
Есть две таблицы: клиентов (KLIENTY) и пользователей (POLZOVATELI).
KLIENTY(ID,NAIM,INN,TEL,EMEIL,ADRES,IDPOLZ)
POLZOVATELI(ID,FIO,TEL,EMEIL)
Мне необходимо как бы "привязывать" клиента к определенному менеджеру (из таблицы пользователей),
поэтому в поле KLIENTY.IDPOLZ я указываю POLZOVATELI.ID.
Для работы с таблицей клиентов использую компонент DataSet из FIB+:
DataSet.DeleteSQL: EXECUTE PROCEDURE KLIENTY_DEL(?ID)
DataSet.InsertSQL: EXECUTE PROCEDURE KLIENTY_INS(?ID,?NAIM,?INN,?TEL,?EMEIL,?ADRES,?IDPOLZ)
DataSet.UpdateSQL: EXECUTE PROCEDURE KLIENTY_UPD(?ID,?NAIM,?INN,?TEL,?EMEIL,?ADRES,?IDPOLZ)
DataSet.SelectSQL: SELECT * FROM KLIENTY_VIEW
Процедуры Insert, Delete и Update были созданы стандартно в IBExpert.
Для Select было создано представление (KLIENTY_VIEW) чтобы в гриде вместо ID пользователя (IDPOLZ)
отображалось его FIO (MENEDGER):
CREATE OR ALTER VIEW KLIENTY_VIEW(ID,NAIM,INN,TEL,EMEIL,ADRES,IDPOLZ,MENEDGER)
AS select KLIENTY.ID,KLIENTY.NAIM,KLIENTY.INN,KLIENTY.TEL,KLIENTY.EMEIL,KLIENTY.IDPOLZ,
POLZOVATELI.FIO as MENEDGER
from klienty left join polzovateli on klienty.idpolz = polzovateli.id
order by upper(naim);
Вроде все прекрасненько, все работает.
Единственная проблема в том, что после вставки записи поле MENEDGER в гриде пустое.
Если сделать DataSet.FullRefresh (постоянно делать этого не хочется), тогда менеджер в гриде появится.
Если я вставляю в процедуру DataSet.RefreshSQL поле MENEDGER и делаю после вставки DataSet.Refresh,
то выскакивает ошибка: SQL error code=-206. Column unknown. MENEDGER. Вот текст процедуры DataSet.RefreshSQL:
SELECT ID,NAIM,INN,TEL,EMEIL,ADRES,IDPOLZ FROM KLIENTY WHERE ID = ?ID

Подскажите кто знает, что не так? Как надо делать правильно?
...
Рейтинг: 0 / 0
подстановка значения вместо id
    #39175457
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валдис5,
добавь это поле в refresh
может полегчает

зы. для оформления сообщения есть прекрасный тег SRC
...
Рейтинг: 0 / 0
подстановка значения вместо id
    #39175465
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валдис5,

Код: sql
1.
WHERE ID = ?ID



а это правильно? разве перед именованными параметрами в Delphi традиционно не двоеточие ставится?
...
Рейтинг: 0 / 0
подстановка значения вместо id
    #39175468
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа это правильно? Да, правильно. FIB+ позволяют так писать
...
Рейтинг: 0 / 0
подстановка значения вместо id
    #39175472
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валдис5Для Select было создано представление KLIENTY_VIEW

Валдис5Вот текст процедуры DataSet.RefreshSQL:
SELECT ID,NAIM,INN,TEL,EMEIL,ADRES,IDPOLZ FROM KLIENTY WHERE

...так что ты всё-таки читаешь? KLIENTY или KLIENTY_VIEW ?
...
Рейтинг: 0 / 0
подстановка значения вместо id
    #39175473
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валдис5
Код: sql
1.
DataSet.SelectSQL: SELECT * FROM KLIENTY_VIEW


Валдис5Вот текст процедуры DataSet.RefreshSQL:
Код: sql
1.
SELECT ID,NAIM,INN,TEL,EMEIL,ADRES,IDPOLZ FROM KLIENTY WHERE ID = ?ID


Два различия в приведённых запросах сумеешь найти самостоятельно?..

PS: Использовать процедуры для редактирования данных в данном случае абсолютно излишне.
Открой для себя триггера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
подстановка значения вместо id
    #39175478
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovОткрой для себя триггера.

гууглить "firebird updateable views"
...
Рейтинг: 0 / 0
подстановка значения вместо id
    #39175502
Валдис5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch, Dimitry Sibiryakov.

СПАСИБКИ!!!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / подстановка значения вместо id
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]