![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Погогите сделать SELECT [D6, dBase, FoxPro]
setis © (2006-03-12 07:12:00)Помогите. Как сделать SELECT? Какие компоненты надо добавить и что с ними сделать и какой код написать?
Описание программы:
В программу добавлены ADOConnection1, ADOQuery1, DataSource1, DBGrid1. Связь сделана. Field'ы это название столбцов в таблице которые выбирают по усматрению пользователя. N- это время из таблицы идет фильтрование по времени.
При запуске программы когда я выбираю все столбы то ошибки нет, а когда некоторые из них то идет ошибка SELECT.
Field_string:='SELECT TIME '+','+field1+', '+field2+', '+field3+',
'+field4+', '+field5+', '+field6+', '+field7+', '+field8+', '+field9+',
'+field10+', '+field11+', '+field12+', '+field13+', '+field14+',
'+field15+', '+field16+', '+field17+', '+field18;
Where_string:='WHERE(TIME/'+n+'=1)or(TIME/'+n+'=2)or(TIME/'+n+'=3)or(TIME/'+n+'=4)or(TIME/'+n+'=5)or(TIME/'+n+'=6)or(TIME/'+n+'=7)or(TIME/'+n+'=8)or(TIME/'+n+'=9)or(TIME/'+n+'=10)or(TIME/'+n+'=11)or(TIME/'+n+'=12)or(TIME/'+n+'=13)or(TIME/'+n+'=14)or(TIME/'+n+'=15)';
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add(Field_String);
Form1.ADOQuery1.SQL.Add('FROM basa');
Form1.ADOQuery1.SQL.Add(Where_String);
Form1.ADOQuery1.SQL.Add('ORDER BY TIME');
Form1.ADOQuery1.ExecSQL;
Form1.ADOQuery1.Prepared:=True;
Form1.ADOQuery1.Active:=True;
setis (2006-03-13 17:14:00) [1]Спасибо всем за помощь.
Плохиш (2006-03-13 11:57:00) [2]
> setis © (13.03.06 11:26) [10]
> вот проверка которую я написал
> if CheckBox1.Checked then Field1:='название столбца;
Тогда ясно это
> При запуске программы когда я выбираю все столбы то ошибки
> нет, а когда некоторые из них то идет ошибка SELECT.
select field1,,,,,, from ...
Где Ваша логика?
Если Вы хотите формировать запрос вручную, то собирайте его постепенно
Field_string:='SELECT TIME';
if CheckBox1.Checked then Field_string:=Field_string + ',' + 'название столбца;
...
Для Where_string тоже самое.
msguns (2006-03-13 11:30:00) [3]А нельзя запросом вытаскивать все поля, а вот в гриде "выключать" все ненужные колонки ?
В этом случае даже не надо лишний раз озадачивать "сервер".
setis (2006-03-13 11:26:00) [4]вот проверка которую я написал
if CheckBox1.Checked then Field1:='название столбца;
и так 18 раз
Плохиш (2006-03-13 10:52:00) [5]
> setis © (13.03.06 07:58) [8]
> fieldам присваивается название столбцов в зависимости есть
> ли CheckBox1.Checked
Правда? Из кода это конечно очень хорошо видно. Только ткни, пожалуйста, мне непонятливому, в то место твоего кода, где происходит проверка CheckBox1.Checked.
setis (2006-03-13 07:58:00) [6]fieldам присваивается название столбцов в зависимости есть ли CheckBox1.Checked
а так я думал добовлять столбцы но при выборе некотрорых выдает ошибку select.
>Field_string:='SELECT TIME '+','+field1+', '+field2+', '+field3+',
> '+field4+', '+field5+', '+field6+', '+field7+', '+field8+',
> '+field9+', '+field10+', '+field11+', '+field12+', '+field13+', '+field14+',
> '+field15+', '+field16+', '+field17+', '+field18;
а это сортировка по вермени вместо цикла
>Where_string:='WHERE(TIME/'+n+'=1)or(TIME/'+n+'=2)or(TIME/'+n+'=3)or(TIME/'+n+'=4)or(TIME/'+n+'=5)or(TIME/'+n+'=6)or(TIME/'+n+'=7)or(TIME/'+n+'=8)or(TIME/'+n+'=9)or(TIME/'+n+'=10)or(TIME/'+n+'=11)or(TIME/'+n+'=12)or(TIME/'+n+'=13)or(TIME/'+n+'=14)or(TIME/'+n+'=15)';
Я прошу мне помочь сделать так чтобы при нек.Checked добовлялись эти столбцы соответсвующим CheckBox.
Virgo_Style (2006-03-12 21:33:00) [7]овсянка, сэр.
или спагетти?
Плохиш (2006-03-12 21:27:00) [8]
> Field_string:='SELECT TIME '+','+field1+', '+field2+', '+field3+',
>
> '+field4+', '+field5+', '+field6+', '+field7+', '+field8+',
> '+field9+',
> '+field10+', '+field11+', '+field12+', '+field13+', '+field14+',
>
> '+field15+', '+field16+', '+field17+', '+field18;
>
> Where_string:='WHERE(TIME/'+n+'=1)or(TIME/'+n+'=2)or(TIME/'+n+'=3)or(TIME/'+n+'=4)or(TIME/'+n+'=5)or(TIME/'+n+'=6)or(TIME/'+n+'=7)or(TIME/'+n+'=8)or(TIME/'+n+'=9)or(TIME/'+n+'=10)or(TIME/'+n+'=11)or(TIME/'+n+'=12)or(TIME/'+n+'=13)or(TIME/'+n+'=14)or(TIME/'+n+'=15)';
>
Что это, Беримор?
Virgo_Style (2006-03-12 16:02:00) [9]setis © (12.03.06 15:50) [4]
какие укажешь, те и "высвечиваются"
setis (2006-03-12 15:50:00) [10]Query1.Sql.text:= 'Select Field1, Field2, Field3 From Table';
Нет так не пойдет, так высвечиваются все столбы, а мне надо чтобы они высвечивались по запросу. Как это сделать?
Anatoly Podgoretsky (2006-03-12 12:54:00) [11]ViktorZ © (12.03.06 12:51) [2]
Не все - не дожно быть создано полей в dataset и колонок в dbGrid
ViktorZ (2006-03-12 12:51:00) [12]Query1.Sql.text:= 'Select Field1, Field2, Field3 From Table';
Query1.open;
Это все!
Virgo_Style (2006-03-12 09:38:00) [13]
>Form1.ADOQuery1.ExecSQL;
>Form1.ADOQuery1.Prepared:=True;
> Form1.ADOQuery1.Active:=True;
Ух ты.
> Field_string:=
> Where_string:=
Есть такая штука, как цикл For, очень полезная.
И вообще описание проблемы и код в каких-то сложных отношениях, мне кажется...