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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2012, 12:12   #1
MaXoN66613
Пользователь
 
Регистрация: 09.06.2009
Сообщений: 28
Вопрос Колонки в Stringgrid

Доброго дня, у меня такой вопрос, у нас есть стринг грид, в который из базы мы селектим какие то данные, все бы хорошо но сталкнулся с такой проблемой что когда произвожу селект только определенных столбцов, то колонки заполняются одинаковыми значениями, то есть в запросе несколько имен столбца, а заполняется все только от первого

заполняю ее таким образом
Цитата:
var
i : integer;
begin
with Form2, query do
begin
Query.Sql.Clear;
Query.Sql.Add('Select Id, name from Device');
Query.Open;
Stringgrid8.RowCount:= Query.RecordCount+1;
for I := 0 to query.recordcount - 1 do
begin
Stringgrid8.Cells[0,i+1]:=Query.Fields[0].Value;
Next;
end;
begin
Stringgrid8.Cells[0,0]:='Номер';
end;
query.close;
AutoSizeGridColumn(StringGrid8, 0);

end;
end;
подскажите, как мне правильно сделать, чтобы нужные столбцы заполнялись в нужные мне колонки SG? Мне казалось это где то в настройках но что то разобраться так и не получилось, Буду Весьма благодарен за подсказку
"Я, знаю то, что ни чего не знаю, а вы не знаете даже этого" (с)Сократ
MaXoN66613 вне форума Ответить с цитированием
Старый 07.06.2012, 12:24   #2
MaXoN66613
Пользователь
 
Регистрация: 09.06.2009
Сообщений: 28
По умолчанию разобрался

разобрался сам, Спасибо все ровно =)
"Я, знаю то, что ни чего не знаю, а вы не знаете даже этого" (с)Сократ
MaXoN66613 вне форума Ответить с цитированием
Старый 07.06.2012, 12:26   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

query.fieldbyname(<нужный столбец>)
SG.Cells[<нужная колонка>,..]
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 09.06.2012, 02:09   #4
MaXoN66613
Пользователь
 
Регистрация: 09.06.2009
Сообщений: 28
Вопрос Select по дате

Добрый день, У меня опять вопрос, Делаю фильтрацию списка через запрос, то есть выставляю диапозон даты через 2 Дататаймпикера, и по нажатии кнопки должно показать только то что между этими датами. Делаю это так

Код:
var
i : integer;
DT4, DT5 : string;
    begin
      DateTimeToString(DT4, 'yyyy-mm-dd', Date4.Date);
      DateTimeToString(DT5, 'yyyy-mm-dd', Date5.Date);
      with Form2, query do
      begin
      Query.Sql.Clear;
      Query.Sql.Add('Select * from Work WHERE datework BETWEEN '+DT4+' AND '+DT5+'');
      Query.Open;
      Stringgrid4.RowCount:= Query.RecordCount+1;
      for I := 0 to query.recordcount - 1 do
Но проблема в том что, список просто становится пустым, то есть ошибка в запросе, пробовал запрос в самой базе, то же самое,
посмотрел на базу, тип столбца был datatime. поменял на date, теперь при выполнении этого куска пишет ошибку 'Operand type clash: date is incompatible with int' что может быть не так ? За ранее благодарен
"Я, знаю то, что ни чего не знаю, а вы не знаете даже этого" (с)Сократ
MaXoN66613 вне форума Ответить с цитированием
Старый 09.06.2012, 07:59   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Или значения дат заключать в одинарные кавычки, или применять параметрический запрос, в котором передача значений в параметры не требует преобразования дат в строковое представление.

P.S. Надо бы сообщать какая СУБД применяется. "Догадайтесь, мол, сами"?

P.P.S. Зачем применять конструкцию with ..., query ..., если все равно внутри оператора with используется квалификатор Query?

Последний раз редактировалось Прик; 09.06.2012 в 08:01.
Прик вне форума Ответить с цитированием
Старый 09.06.2012, 11:30   #6
MaXoN66613
Пользователь
 
Регистрация: 09.06.2009
Сообщений: 28
По умолчанию

СУБД MSSql 2008 r2.
ну я знаю что код так себе, но он в принципе рабочий, в принципе понятно почему у меня выборка не работает, мне так кажется что в самой базе, при указанном тиме datetime в колонке пишется как ddmmyyyy 00:00:00.000 b скорей всего из за этого и не может найти нужное значение, а с date вообще все как то странно...
"Я, знаю то, что ни чего не знаю, а вы не знаете даже этого" (с)Сократ
MaXoN66613 вне форума Ответить с цитированием
Старый 09.06.2012, 12:15   #7
MaXoN66613
Пользователь
 
Регистрация: 09.06.2009
Сообщений: 28
По умолчанию

Цитата:
Сообщение от MaXoN66613 Посмотреть сообщение
СУБД MSSql 2008 r2.
ну я знаю что код так себе, но он в принципе рабочий, в принципе понятно почему у меня выборка не работает, мне так кажется что в самой базе, при указанном тиме datetime в колонке пишется как ddmmyyyy 00:00:00.000 b скорей всего из за этого и не может найти нужное значение, а с date вообще все как то странно...
Все разобрался, Спасибо =)
"Я, знаю то, что ни чего не знаю, а вы не знаете даже этого" (с)Сократ
MaXoN66613 вне форума Ответить с цитированием
Старый 09.06.2012, 12:20   #8
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Чтобы не было проблем используйте запрос с параметрами:
Код:
Query.Sql.Text := 'Select * from Work WHERE datework BETWEEN :DT4 AND :DT5';
Query.Parameters.ParamByName('DT4').Value := Date4.Date;
...
Прик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение строки на колонки в StringGrid artemavd Общие вопросы Delphi 8 27.03.2011 10:11
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
Длина колонки StringGrid в процентах KLOP Общие вопросы Delphi 4 27.04.2010 12:35
Сравнить колонки Romuald Microsoft Office Excel 11 22.01.2008 09:28