Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2012, 13:47   #1
Proxx
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 14
По умолчанию

проблема в том что у меня есть 3 таблицы которые взамодейсвуют друг с другом это fizlica(Физ.лицо) ,yrlica(юридическое лицо), zakaz(заказ). вот мне надо чтобы в dbgrid-e отображалось поле в зависимости от того с кем заказ подписан если с физ.лицом тогда поле fam , если юредическое лицо тогда поле naimorg


я пробую через переменные...
Код:
if ADOQuery1.FieldByName('kodfiz').Value='null' then
 begin
  fiokln:=' naimorg ,';
  tablkln:=' yrlica y, ';
  uslkln:=' and y.kodyr=z.kodyr ';
  end else begin
  fiokln1:=' fam ,';
  tablkln1:=' fizlica f, ';
 uslkln1:=' and f.kodfiz=z.kodfiz ';
End;
.......................
Код:
ADOQueryinfo.Close;
ADOQueryinfo.SQL.Text:='select nzak,data_pr,srok_v_zak,'+fiokln+''+fiokln1+' statuszak,naimiz,sernomer,tiprem,b_u,carap_skol,sumka,zaradnoe,korobka,diski,shnuri,naimotd'+Xfio+
' from '+tablkln+''+tablkln1+' zakaz z,otdel o,izdeliya e'+Xinz+' where e.kodiz=z.kodiz '
+den+xkod+Xkodinz+uslkln+uslkln1;
ADOQueryinfo.Open;
ну он не отображает тогда ничяго.......
proxxx

Последний раз редактировалось Stilet; 07.09.2012 в 14:06.
Proxx вне форума Ответить с цитированием
Старый 07.09.2012, 14:34   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

реш первое чисто SQL
по условию заполнено только одно из полей fiz.FIO или ur.naimorg
делаем слияние дтих двух полей с заменой пустого поля (=NULL) на пустую строчку.
Код:
ВНИМАНИЕ! запись следующей строки зависит от используемой СУБД.
select IIF(fiz.fio=NULL,'') + IIF(ur.naimorg=NULL,ur.namimorg) as naim, 
... // остальные поля
from zakaz // берем основную таблицу 
// и присоединяем к ней две другие (fiz ur )
left join fiz ON zakaz.fiz =fiz.id //условие связи строк таблиц zakaz и fiz
left join ur  ON zakaz.ur  =ur.id  //условие связи строк таблиц zakaz и ur
вариант второй самый простой (опять SQL)
делаем отдельно для fiz и ur и потом объединяем (union)
Код:
select ...., fiz.FIO as naim
from zakaz inner join zakaz.fiz = fiz.id
union
select ...., ur.naimorg as naim
from zakaz inner join zakaz.ur  =ur.id
вар три. использовать вычислимые поля Delphi TcalcField
Код:
select fiz.fio, ur.naimorg, // далее из двух полей "вычислить программно" нужное
... // остальные поля
from zakaz // берем основную таблицу 
// и присоединяем к ней две другие (fiz ur )
left join fiz ON zakaz.fiz =fiz.id //условие связи строк таблиц zakaz и fiz
left join ur  ON zakaz.ur  =ur.id  //условие связи строк таблиц zakaz и ur
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 07.09.2012 в 14:39.
evg_m вне форума Ответить с цитированием
Старый 10.09.2012, 12:34   #3
Proxx
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 14
По умолчанию

спасибо большое)))))
proxxx
Proxx вне форума Ответить с цитированием
Старый 14.09.2012, 11:55   #4
Proxx
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 14
Радость вывод данных в listbox

подскажите как сделать чтобы при 2-ом нажатии мышки по dbgrid столбец записывался в listbox и если еще нажал то к тобу что было прибавилось через ; например))))
proxxx
Proxx вне форума Ответить с цитированием
Старый 14.09.2012, 14:30   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
чтобы при 2-ом нажатии мышки по dbgrid
DbgridX.Ondblclick оно?
Цитата:
столбец
DBgrid F1 SelectedIndex Columns SeeAlso
Цитата:
записывался
и что сразу весь (все строки из данного столбца)?
1. найти (узнать из свойств) нужное поле (field) набора данных
2. пройти по всем записям нужного набора данных
3. записать полученные значения (string) в ListBox. (отредактировать/добавить строку)

F1 ListBox Items
Properties (исправить, изменить строку)
Methods (найти нужную, добавить строку)
Цитата:
что было прибавилось через ;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 14.09.2012 в 14:33.
evg_m вне форума Ответить с цитированием
Старый 14.09.2012, 16:01   #6
Proxx
Пользователь
 
Регистрация: 07.09.2012
Сообщений: 14
Счастье

спс но решил по другому))))))
FinzPriem.ListBox1.Items.Add(ADOQue ryrab.FieldByName('naimrab').AsStri ng+' цена:'+ADOQueryrab.FieldByName('cen a').AsString) ;
proxxx
Proxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать ссылку на поле из других полей amosik Microsoft Office Access 2 19.05.2012 12:08
Отображение полей в DbGrid Garmon БД в Delphi 12 02.05.2012 00:38
Как сделать автозаполнение полей В WebBrowser Deryagtev Помощь студентам 2 18.04.2012 12:49
Отображение полей таблиц измерений Microsoft Access в сводной талице ECXEL andreyslad Microsoft Office Excel 6 15.02.2012 17:51
Отображение связанных полей в dbgrid Deight БД в Delphi 5 19.04.2009 00:42