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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2015, 08:37   #1
Staziah2
Пользователь
 
Регистрация: 02.03.2015
Сообщений: 50
По умолчанию RadioGroup и процедура ButtonClick

Добрый день! Я только начинаю в Delphi, создаю программу,практически доканчиваю,но к сожалению,никак не могу разобраться с RadioGroup. Дело в том что,надо в поле "Номер документа" человек вписал(например три цифры,не зная номера),а потом нажал примерно на RadioGroup " в конце",потом нажал на кнопку "Найти"(button1) и в таблице должны показаться результаты. Работаю в Делфи 7. Скины прилагаются. Буду благодарна очень.
БД.
SQL.jpg
вот сама программа:
viborka.jpg

а вот и код:
Код:
Код Delphi

unit Unit4;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, wwdbdatetimepicker, wwdblook, ExtCtrls, DBCtrls, Mask,
  wwdbedit, Wwdotdot, Wwdbcomb, wwclearbuttongroup, wwradiogroup, Grids,
  Wwdbigrd, Wwdbgrid;
 
type
  TForm4 = class(TForm)
    Panel1: TPanel;
    wwDBGrid1: TwwDBGrid;
    Button1: TButton;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    ceh1: TwwDBLookupCombo;
    data2: TwwDBLookupCombo;
    Panel3: TPanel;
    RG1: TRadioGroup;
    Label3: TLabel;
    Label4: TLabel;
    Button2: TButton;
    Tip_dok2: TwwDBLookupCombo;
    wwDBLookupCombo1: TwwDBLookupCombo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form4: TForm4;
 
implementation
         uses fr,Main;
{$R *.dfm}
 
procedure TForm4.Button1Click(Sender: TObject);
begin
dm.Main.Close;
dm.Main.SQL.Clear;
dm.Main.SQL.Text:='select * from [naryadi]';
if (Form4.ceh1.text <> '') or (Form4.data2.text <> '') or (Form4.N_naryad1.text <> '') or (Form4.Tip_dok2.Text <> '') then   dm.Main.SQL.Text:=dm.Main.SQL.Text+'where 1=1 ';
 
if Form4.ceh1.text <> '' then
 begin
 dm.Main.SQL.Text := dm.Main.SQL.Text+' and  ceh=:@ceh';
 dm.Main.Parameters.ParamByName('@ceh').Value:= Form4.ceh1.text;
 end;
if Form4.data2.text <> '' then
begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and data=:@data '   ;
 dm.Main.Parameters.ParamByName('@data').Value:= Form4.data2.text;
 end;
if Form4.Tip_dok2.text <> '' then
begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and Tip_dok=:@Tip_dok '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= Form4.Tip_dok2.text;
 end;
{if Form4.RG1.ItemIndex=0 then вот здесь я не могу понять,что нужно прописать}
 
  dm.Main.Open;
 end;
 
 
end.
Staziah2 вне форума Ответить с цитированием
Старый 19.03.2015, 09:30   #2
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

Код:
case when RG1.itemindex of
0:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= Form4.Tip_dok2.text+'%';
end;
1:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= '%'+Form4.Tip_dok2.text;
end;
2:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= '%' + Form4.Tip_dok2.text+'%';
end;
end;
как то так
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 19.03.2015, 09:46   #3
Staziah2
Пользователь
 
Регистрация: 02.03.2015
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Toxa Посмотреть сообщение
Код:
case when RG1.itemindex of
0:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= Form4.Tip_dok2.text+'%';
end;
1:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= '%'+Form4.Tip_dok2.text;
end;
2:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= '%' + Form4.Tip_dok2.text+'%';
end;
end;
как то так

Почти,только здесь не номер заказа и тип документа,а номер наряда....Но как поняла,что в принципе можно поменять на номер наряда,то думаю сработается.

Как думаете?

к сожалению не получилось,выдалась ощибка:[Error] Unit4.pas(66): Undeclared identifier: 'when'
под
Код:
case when RG1.itemindex of

Последний раз редактировалось Stilet; 20.03.2015 в 07:46.
Staziah2 вне форума Ответить с цитированием
Старый 19.03.2015, 09:57   #4
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

блин, ошибся, надо без него
Код:
case RG1.itemindex of
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 19.03.2015, 09:58   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Undeclared identifier: 'when'
а раскрыть книжку или справку по кейсу?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.03.2015, 01:40   #6
Staziah2
Пользователь
 
Регистрация: 02.03.2015
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Toxa Посмотреть сообщение
блин, ошибся, надо без него
Код:
case RG1.itemindex of
Код:
if Form4.N_naryad1.text <> '' then
 case Form4.RG1.ItemIndex of
 0:begin
 dm.Main.SQL.Text := dm.Main.SQL.Text + ' and N_naryad Like @N_naryad';
 dm.Main.Parameters.ParamByName('@N_naryad').Value:= ''' + Form4.N_naryad1.text + '%'''; // вот здесь..
 1:begin
 dm.Main.SQL.Text := dm.Main.SQL.Text + ' and N_naryad Like @N_naryad';
 dm.Main.Parameters.ParamByName('@N_naryad').Value:= ''%' + Form4.N_naryad1.text + '''';
 2:begin
 dm.Main.SQL.Text := dm.Main.SQL.Text + ' and N_naryad Like @N_naryad';
 dm.Main.Parameters.ParamByName('@N_naryad').Value:= ''%' + Form4.N_naryad1.text + '%''';
  end;
 end;
выдает ошибку: [Error] Unit4.pas(70): Illegal character in input file: '%' ($25)

Цитата:
Сообщение от Toxa Посмотреть сообщение
Код:
case when RG1.itemindex of
0:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= Form4.Tip_dok2.text+'%';
end;
1:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= '%'+Form4.Tip_dok2.text;
end;
2:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like @Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('@Tip_dok').Value:= '%' + Form4.Tip_dok2.text+'%';
end;
end;
как то так

все равно не работает...к сожалению

Последний раз редактировалось Stilet; 20.03.2015 в 07:47.
Staziah2 вне форума Ответить с цитированием
Старый 20.03.2015, 07:49   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
@Tip_dok
Что за ерунда?
Код:
case when RG1.itemindex of
0:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like :Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('Tip_dok').Value:= Form4.Tip_dok2.text+'%';
end;
1:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like :Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('Tip_dok').Value:= '%'+Form4.Tip_dok2.text;
end;
2:begin
 dm.Main.SQL.Text:= dm.Main.SQL.Text+' and n_zakaz like :Tip_dok  '   ;
 dm.Main.Parameters.ParamByName('Tip_dok').Value:= '%' + Form4.Tip_dok2.text+'%';
end;
end;
И возможно понадобится .ParamByName('Tip_dok').Value:=Quot edStr( '%' + Form4.Tip_dok2.text+'%');
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.03.2015, 08:30   #8
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

Цитата:
dm.Main.Parameters.ParamByName('@N_ naryad').Value:= ''' + Form4.N_naryad1.text + '%''';
зачем тут тройные кавычки? из-за них вот это
Код:
 + Form4.N_naryad1.text +
воспринимается как строка, а не контрол с формы, и из-за них же передается процент не как строка, а должен

в параметры не надо вообще передавать кавычки
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 23.03.2015, 01:18   #9
Staziah2
Пользователь
 
Регистрация: 02.03.2015
Сообщений: 50
Радость

Цитата:
Сообщение от Toxa Посмотреть сообщение
зачем тут тройные кавычки? из-за них вот это
Код:
 + Form4.N_naryad1.text +
воспринимается как строка, а не контрол с формы, и из-за них же передается процент не как строка, а должен

в параметры не надо вообще передавать кавычки

Спасибо огромное за помощь...я чуток по=другому сделала....но сработало..благодаря вашим подсказкам
Staziah2 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ButtonClick alex0097 Общие вопросы Delphi 1 28.11.2013 16:12
ButtonClick alex0097 Общие вопросы Delphi 12 23.11.2013 13:29
RadioGroup Vrat19 Помощь студентам 3 14.11.2009 18:35
Подскажите с кодом процедуры ButtonClick KARUSHEV Помощь студентам 3 23.03.2009 14:01
Совместная обработка ButtonClick ButtonMouseDown serg-abinsk Помощь студентам 3 13.12.2006 10:29