Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Вниз

Вот к чему приводит лень :( Посмейтесь.   Найти похожие ветки 

 
syte_ser78 ©   (2005-07-15 12:02) [0]

Нужно было следующее:
Есть таблица.
Первые ее 4 поля грузим в комбобоксы без повторов.
При выборе значения в комбе, фильтруем таблицу и в другие комбы и ДБгрид выводим только удовлетворяющие условию данные. При выборе в 2,3,4
аналогично.
Лень было воспользоватся советом из http://delphimaster.net/view/3-1120217231/ и во какой монтр вышел :)

//ЗАГРУЗКА В КОМБОБОКСЫ ДАННЫХ ДЛЯ ВЫБОРА типа/госта/ру/ду...
//ЭТУ ПРОЦЕДУРУ НУЖНО ПЕРЕПИСАТЬ ТАКИМ ОБРАЗОМ ЧТОБЫ В НИЖЕСЛЕДУЮЩИХ КОМБАХ
//ОТОБРАЖАЛИСЬ ДАННЫЕ ТОЛЬКО УДОВЛЕТВОРЯЮЩИЕ УСЛОВИЯМ ВЫШЕСЛЕДУЮЩИХ
//ЭТУ ХЕРНЬ ОБЯЗАТЕЛЬНО ПЕРЕПИСАТЬ!!!!!!!!
//Переписал блин. Лучше бы я умер вчера...
procedure tfrm_main.load_cmb(armatura,gost,dy,py,all:boolean);
var i,ii:integer;
begin
  ii:=0;
  if armatura=true then
     begin
     frm_main.cmb_armatura.Clear;
     frm_main.cmb_armatura.Items.Add ("");
     end;
  if gost=true then
     begin
     frm_main.cmb_gost.Clear;
     frm_main.cmb_gost.Items.Add ("");
     end;
  if dy=true then
     begin
     frm_main.cmb_Dy.Clear;
     frm_main.cmb_Dy.Items.Add ("");
     end;
  if py=true then
     begin
     frm_main.cmb_Py.Clear;
     frm_main.cmb_Py.Items.Add ("");
     end;
  while not frm_main.Table1.Eof do
     begin
     if all=true then
        begin
        ii:=ii+1;
        frm_logo.Gauge1.Progress:=round(100*ii/frm_main.Table1.RecordCount);
        frm_logo.Label2.Caption:="Обрабатываем "+frm_main.Table1Name.AsString;
        frm_logo.Label2.Refresh;
        end;
     if armatura=true then
        begin
        if frm_main.Table1Name.AsString<>"" then
           begin
           if frm_main.cmb_armatura.Items.IndexOf(frm_main.Table1Name.AsString)<0 then
              frm_main.cmb_armatura.Items.Add (frm_main.Table1Name.AsString);
           end;
        end;
     if gost=true then
        begin
        if frm_main.Table1GOST.AsString<>"" then
           begin
           if frm_main.cmb_gost.Items.IndexOf(frm_main.Table1Gost.AsString)<0 then
              frm_main.cmb_gost.Items.Add (frm_main.Table1Gost.AsString);
           end;
        end;
     if dy=true then
        begin
        if frm_main.Table1D_usl_proh.AsString<>"" then
           begin
           if frm_main.cmb_Dy.Items.IndexOf(frm_main.Table1D_usl_proh.AsString)<0 then
              frm_main.cmb_Dy.Items.Add (frm_main.Table1D_usl_proh.AsString);
           end;
        end;
     if py=true then
        begin
        if frm_main.Table1PY.AsString<>"" then
           begin
           if frm_main.cmb_Py.Items.IndexOf(frm_main.Table1Py.AsString)<0 then
              frm_main.cmb_Py.Items.Add (frm_main.Table1Py.AsString);
           end;
        end;
     frm_main.Table1.Next;
     end;
  frm_logo.Close;
  frm_main.Table1.First;
  frm_main.cmb_gost.Sorted:=true;
  frm_main.cmb_Py.Sorted:=true;
  frm_main.cmb_Dy.Sorted:=true;
end;

//ОТОБРАЖАЕМ В ГРИДЕ ЗНАЧЕНИЯ УДОВЛЕТВОРЯЮЩИЕ УСЛОВИЯМ УКАЗАННЫМ В КОМБОБОКСАХ
procedure filter_db;
var
  a,b,c:string;
  f1,f2,f3,f4,f5:string;
  armatura,gost,dy,py:boolean;
begin
  f1:="";
  f2:="";
  f3:="";
  f4:="";
  f5:="";
  c:="";
  if (frm_main.cmb_armatura.text<>"") and (frm_main.cmb_armatura.text<>"-") then
     f1:="Name="+""""+frm_main.cmb_armatura.Text+ """"+" and "
  else
     f1:="Name<>0 and ";
  if (frm_main.cmb_gost.text<>"") and (frm_main.cmb_gost.text<>"-")then
     f3:="GOST="+""""+frm_main.cmb_gost.Text+""""+ " and "
  else                                  
     f3:="GOST<>0 and ";
  if (frm_main.cmb_Py.text<>"") and (frm_main.cmb_Py.text<>"-") then
     f4:="PY="+""""+frm_main.cmb_Py.Text +""""+ " and "
  else
     f4:="PY<>0 and ";
  if (frm_main.cmb_Dy.text<>"") and (frm_main.cmb_Dy.text<>"-") then
     f5:="D_usl_proh="+""""+frm_main.cmb_Dy.Text+""""
  else
     f5:="D_usl_proh<>0";
     c:=""+f1+f2+f3+f4+f5+"";
     frm_main.Label1.caption:=c;
     frm_main.table1.filter:=c;
     frm_main.table1.Filtered:=true;
     frm_main.Caption:=Application.Title+"    ...........    "+c;
  armatura:=true;
  gost:=true;
  dy:=true;
  py:=true;
  frm_main.DBGrid1.Hide;
  frm_main.Panel3.Refresh;
  if frm_main.cmb_armatura.Text<>"" then armatura:=false;
  if frm_main.cmb_gost.Text<>"" then gost:=false;
  if frm_main.cmb_Dy.Text<>"" then dy:=false;
  if frm_main.cmb_Py.Text<>"" then py:=false;
  frm_main.load_cmb(armatura,gost,dy,py,false);
  frm_main.DBGrid1.Show;
end;

procedure Tfrm_main.cmb_armaturaClick(Sender: TObject);
begin
  filter_db;
end;

procedure Tfrm_main.cmb_gostClick(Sender: TObject);
begin
  filter_db;
end;

procedure Tfrm_main.cmb_PyClick(Sender: TObject);
begin
  filter_db;
end;

procedure Tfrm_main.cmb_DyClick(Sender: TObject);
begin
  filter_db;
end;


 
Маг Похмеляйнен   (2005-07-15 12:09) [1]

Дельфийцы шутят :o)


 
REA   (2005-07-15 12:23) [2]

Брр. Дикий код. Активнее используй кнопки Del и Backspace.


 
msguns ©   (2005-07-15 13:24) [3]

Как проверить, правильно ли введено четырехзначное число ?
А очень просто:
if (Edit1.Text="1") or (Edit1.Text="2") or
       ...
и так 9999 раз, если комиллятор выдержит такой код


 
syte_ser78 ©   (2005-07-15 14:02) [4]

msguns ©   (15.07.05 13:24) [3]
Ты не повериш, но кроме " " и "-" могут может быть еще 9 значений которые мне нужны и при которых фильтрация должана быть фалсе.
Зы. Если ты о (frm_main.cmb_Dy.text<>"") and (frm_main.cmb_Dy.text<>"-")



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.033 c
1-1121879980
agile
2005-07-20 21:19
2005.08.07
Потоки и Главный поток


3-1120452796
leonidus
2005-07-04 08:53
2005.08.07
Как связать таблицы с использованием движка ADO


1-1121874412
Igorek
2005-07-20 19:46
2005.08.07
Кодировка файла для чтения/записи из ActiveX обьекта


4-1118130484
Андрей Жук
2005-06-07 11:48
2005.08.07
Как получить выбранный Item в ComboBoxEx


6-1114319054
XLDiB
2005-04-24 09:04
2005.08.07
Как узнать набранную строку в броузере





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский