информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 И ещё раз об интернет-голосовании 
 Типовые уязвимости в драйверах... 
 Logitech готовится закрыть очередную... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Sql запрос и еще... 16.09.02 11:13   [ZloyShaman]
Автор: ASJinx Статус: Незарегистрированный пользователь
<"чистая" ссылка>
sql в delphi
Вопрос:
1) Можно сделать sql запрос такого рода: select fieldA, fieldB, fieldC from tableA
А можно ли сделать запрос не через имя столбца, а через его порядковый номер (можно так сортировать, но мне это не надо). Зачем мне это? Если имя столбца состоит из 2-х слов разделенных пробелом, типа Код Товара то при select Код Товара from tamle1 он ничего ненайдет и будет ругатьтся, что нет такого столбца как Код.
2) Допустим в моем приложении в delphi есть 20 чекбоксов на одной форме с именами cb_1, cb_2, ..., cb_20. Я проверяю их значение и в зависимости от их значения я делаю в общемто одну и туже апперацию. Например:
if cb_1.checked=true then zzz:=zzz+cb_1.caption+', '; // zzz: string
if cb_2.checked=true then zzz:=zzz+cb_2.caption+', ';
...
if cb_20.checked=true then zzz:=zzz+cb_20.caption;
Видно, что я делаю почти одно и тоже. Можно ли это подсократить?
Я пытался делать так: form.companents[N].name - но это даст только его имя,
можно получить tag но это тоже нето. Как?
Sql запрос и еще... 17.09.02 13:24  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> 2) Допустим в моем приложении в delphi есть 20 чекбоксов на
> одной форме с именами cb_1, cb_2, ..., cb_20. Я проверяю их
> значение и в зависимости от их значения я делаю в общемто
> одну и туже апперацию. Например:
> if cb_1.checked=true then zzz:=zzz+cb_1.caption+', '; //
> zzz: string
> if cb_2.checked=true then zzz:=zzz+cb_2.caption+', ';
> ...
> if cb_20.checked=true then zzz:=zzz+cb_20.caption;

А если так:

for I:=0 to Form.ComponentCount-1 do begin
  if StrLeft(Form.Components[I].Name, 3)="cb_" then begin
    if Form.Components[I].Checked=1 then begin
      zzz := zzz + Form.Components[I].Caption;
    end;
  end;
end;

---
Sql запрос и еще... 17.09.02 13:35  
Автор: _Inquisitor_ Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> А если так:
>
>
> for I:=0 to Form.ComponentCount-1 do begin
>   if StrLeft(Form.Components[I].Name, 3)="cb_" then begin
>     if Form.Components[I].Checked=1 then begin
>       zzz := zzz + Form.Components[I].Caption;
>     end;
>   end;
> end;
> 

---
Sorry pal, так не получиться. По причине того что не у каждого компонента есть свойство Caption :-(
И мой совет(не в обиду), прежде чем что-либо написать проверь это на своей машине. А то, как-то некрасиво получается.
Sql запрос и еще... 20.09.02 13:07  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> > А если так:
> >
> >
> > for I:=0 to Form.ComponentCount-1 do begin
> >   if StrLeft(Form.Components[I].Name, 3)="cb_" then
> begin
> >	 if Form.Components[I].Checked=1 then begin
> >	   zzz := zzz + Form.Components[I].Caption;
> >	 end;
> >   end;
> > end;
> > 

---
> Sorry pal, так не получиться. По причине того что не у
> каждого компонента есть свойство Caption :-(

Так в коде сначала имя компонента проверяется. Если в начале имени стоит "cb_", то подразумевается что это чекбокс.

> И мой совет(не в обиду), прежде чем что-либо написать
> проверь это на своей машине. А то, как-то некрасиво
> получается.

Не на чем проверить, нету Дельфы на тачке, писал по памяти, просто как пример, для иллюстрации хода мыслей. Если не работает - уж извини... :))
Sql запрос и еще... 17.09.02 12:57  
Автор: _Inquisitor_ Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> А можно ли сделать запрос не через имя столбца, а через
> его порядковый номер
А как ты это себе представляешь?
>Зачем мне это? Если имя столбца состоит из 2-х слов
> разделенных пробелом,
Избавься от пробелов! В Oracle, например, ты не сможешь создать поле в имени которого есть пробелы. Если же ты работаешь с Access, то попробуй использовать что-то типа Table.[Имя поля с пробелом] на счет других СУБД не в курсе.

> 2) Допустим в моем приложении в delphi есть 20 чекбоксов на
> одной форме с именами cb_1, cb_2, ..., cb_20. Я проверяю их
> значение и в зависимости от их значения я делаю в общемто
> одну и туже апперацию. Например:
> if cb_1.checked=true then zzz:=zzz+cb_1.caption+', '; //
> zzz: string
> if cb_2.checked=true then zzz:=zzz+cb_2.caption+', ';
> ...
> if cb_20.checked=true then zzz:=zzz+cb_20.caption;
> Видно, что я делаю почти одно и тоже. Можно ли это
> подсократить?
А в какой момент времени ты формируешь строку? Если при установке чека, то напиши процедурку, и перенаправь событие OnClick для каждого CheckBox'а на нее. Ну что-то типа
procedure TForm1.CheckBox1OnClick (Sender: Tobject);
begin
Do_On_CheckBoxClick(Sender);
end;
procedure TForm1.Do_On_CheckBoxClick(Sender: Tobject);
begin
if Sender is TCheckBox then zzz:=zzz+(Sender as TCheckBox).Caption;
end;
На счет конкретной реализации могу ошибаться, но идея такова. Если же ты формируешь строку при нажатии кнопки (например), то боюсь что тут уж ничего и не урежешь, придется описывать все ручками.
Sql запрос и еще... 17.09.02 14:17  
Автор: ASJinx Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> А в какой момент времени ты формируешь строку? Если при
> установке чека, то напиши процедурку, и перенаправь событие
> OnClick для каждого CheckBox'а на нее. Ну что-то типа
> procedure TForm1.CheckBox1OnClick (Sender: Tobject);
> begin
> Do_On_CheckBoxClick(Sender);
> end;
> procedure TForm1.Do_On_CheckBoxClick(Sender: Tobject);
> begin
> if Sender is TCheckBox then zzz:=zzz+(Sender as
> TCheckBox).Caption;
> end;
> На счет конкретной реализации могу ошибаться, но идея
> такова. Если же ты формируешь строку при нажатии кнопки
> (например), то боюсь что тут уж ничего и не урежешь,
> придется описывать все ручками.

Фигня в том, что чеки уже сформированы и мне при закрытии окна с чеками надо считать их значения (т.е. при событии OnClose), сформировать zzz из их caption. Нормальным способом будет долго и много, надо короче ...
Sql запрос и еще... 17.09.02 14:50  
Автор: _Inquisitor_ Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Фигня в том, что чеки уже сформированы и мне при закрытии
> окна с чеками надо считать их значения (т.е. при событии
> OnClose), сформировать zzz из их caption. Нормальным
> способом будет долго и много, надо короче ...
Ну тогда что-то типа
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: integer;
TC: TComponent;
begin
For i:=0 to Form1.ComponentCount-1 do
begin
TC:=Form1.Component[i];
if (TC is TCheckBox) then
if (TC as TCheckBox).Checked then zzz:=zzz+(TC as TCheckBox).Caption;
end;
end;
PS Научись общаться с хелпом, иногда помогает ;-))
Сянкью, 18.09.02 09:25  
Автор: ASJinx Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> PS Научись общаться с хелпом, иногда помогает ;-))

Научусь...
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2019 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach