реализация оракула для энергетика - PullRequest
0 голосов
/ 11 февраля 2019

У меня трудности с реализацией запроса Oracle к powerbuilder.У меня есть 3 одиночных редактирования, имя: 1. sle_merk 2. sle_tipe 3. sle_jns

, и у меня есть запрос оракула

select b.nm_merk
,      c.keterangan
,      c.tipe
,      b.keterangan
,      c.usrid
,      c.otr
,      c.dupd
,      c.dotr
,      c.status
from   tipe_kend c 
left 
outer
join   jns_kendaraan b 
on     c.kd_jenis = b.kd_jenis
left 
outer
join   merk_kend b 
on     c.kd_merk = b.kd_merk
where  b.kd_jenis like '%%' 
AND    b.kd_merk  like '%%' 
AND    c.tipe     like '%%'

, что я хочу, если все одиночные правки равны нулю, тоданные появляются, но когда заполнено одно из редакторов одиночного канала, тогда данные появляются там, где такие данные, как% singelineedit%.У меня трудности с выполнением запроса в Powerbuilder.

1 Ответ

0 голосов
/ 11 февраля 2019

Поскольку вы не говорите, что используете элемент управления окном данных, я предполагаю, что вы не используете.С учетом вышесказанного, это должно быть частью встроенного SQL внутри какого-либо метода.Таким образом, вам нужно объявить переменные для каждого из столбцов в вашем извлечении.Вам также нужны переменные для хранения содержимого элементов управления SLE.

В конечном итоге вы получите что-то вроде этого:

string ls_nm // make sure datatypes are correct
string ls_sle1, ls_sle2, ls_sle3
// get values of the sle controls
ls_sle1 = sle_merk.text
IF IsNull(ls_sle1) THEN ls_sle1 = ''
ls_sle2 = sle_tipe.text
IF IsNull(ls_sle2) THEN ls_sle2 = ''
ls_sle3 = sle_jns.text
IF IsNull(ls_sle3) THEN ls_sle3 = ''

select b.nm_merk, ... 
INTO :ls_nm, ...
from   tipe_kend c 
left outer join ns_kendaraan b on c.kd_jenis = b.kd_jenis
left outer join   merk_kend b on  c.kd_merk = b.kd_merk
where  b.kd_jenis like '%' + ls_sle1 + '%' 
AND    b.kd_merk  like '%' + ls_sle2 + '%' 
AND    c.tipe     like '% + ls_sle3 + '%';

Обратите внимание, что при неудаче будет возвращено более одной строки.Если вам нужно несколько строк, вам нужно использовать элемент управления datawindow / datastore (или курсоры, но они очень неэффективны).

...