|
подстановка значения вместо id
|
|||
---|---|---|---|
#18+
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 Подскажите кто знает, что не так? Как надо делать правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2016, 16:34 |
|
подстановка значения вместо id
|
|||
---|---|---|---|
#18+
Валдис5, добавь это поле в refresh может полегчает зы. для оформления сообщения есть прекрасный тег SRC ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2016, 16:44 |
|
подстановка значения вместо id
|
|||
---|---|---|---|
#18+
Валдис5, Код: sql 1.
а это правильно? разве перед именованными параметрами в Delphi традиционно не двоеточие ставится? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2016, 16:50 |
|
подстановка значения вместо id
|
|||
---|---|---|---|
#18+
Ariochа это правильно? Да, правильно. FIB+ позволяют так писать ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2016, 16:52 |
|
подстановка значения вместо id
|
|||
---|---|---|---|
#18+
Валдис5Для Select было создано представление KLIENTY_VIEW Валдис5Вот текст процедуры DataSet.RefreshSQL: SELECT ID,NAIM,INN,TEL,EMEIL,ADRES,IDPOLZ FROM KLIENTY WHERE ...так что ты всё-таки читаешь? KLIENTY или KLIENTY_VIEW ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2016, 16:53 |
|
подстановка значения вместо id
|
|||
---|---|---|---|
#18+
Валдис5 Код: sql 1.
Валдис5Вот текст процедуры DataSet.RefreshSQL: Код: sql 1.
Два различия в приведённых запросах сумеешь найти самостоятельно?.. PS: Использовать процедуры для редактирования данных в данном случае абсолютно излишне. Открой для себя триггера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2016, 16:54 |
|
подстановка значения вместо id
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovОткрой для себя триггера. гууглить "firebird updateable views" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2016, 16:56 |
|
|
start [/forum/topic.php?fid=40&tid=1562335]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 146ms |
0 / 0 |