Форум: "Потрепаться";
Текущий архив: 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