Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.09.2010, 19:42
Регина Регина вне форума
Прохожий
 
Регистрация: 08.04.2008
Сообщения: 15
Репутация: 10
По умолчанию Тип данных Date, DBLookopCombobox

Здравствуйте! Есть небольшая проблема. Создала бд, использую dbgrideh. adoquery datasourse Поставила dblookopcombobox в нем будет список дат (поле date_pro) - для этого использовала adoquery с запросом и datasourse. Выборка должна просиходить по кнопке Обновить.
Вот код:
Код HTML:
procedure TForm1.tlb_updateClick(Sender: TObject); var i,k: Integer; sort, fpodr, fpol, f, fcolor, fispol, fdate, s: String; begin Screen.Cursor:= crHourGlass; i:=0; while i<DBGridEh1.Columns.Count do begin DBGridEh1.Columns[i].Title.SortMarker:=smNoneEh; i:=i+1; end; DBGridEh1.SortLocal:=False; //сбросить сортировку пользователя DBGridEh1.SortLocal:=True; //сброс произведен if DB_date.KeyValue<>null then if DB_date.KeyValue<>'--' then fdate:=' AND (date_pro = '''+DB_date.KeyValue+''')' else fdate:=''; f=fdate+fcolor+fispol // отрывок кода, сюда суммируются другие выборки sql_khp.SQL.Text:='SELECT kod_map, podrotpr, podrpol, name, map, nzah, zmf, kol, date_pro, num_pro, zstate, kod_op, color, zispol, zdateinput ' + ' from dd092010 where podrotpr not like ("53%") and kod_op not like ("65") and podrpol like ("53%") ' + ' '+f+ ' ORDER BY podrotpr, podrpol ' + sort; if sql_khp.Active then sql_khp.Active:=False; sql_khp.Active:=True; Screen.Cursor:= crDefault; end;

Пишет ошибку неопределенного типа, как я поняла то ли он индекс трубует то ли что. Когда делала такую же выборку, но для полей "исполнение " и "цвет" ничего такого не было, но для них я поставила adotable а не adoquery. но с датой мне именно adoquery нужно использовать, таблица очень большая, а мне нужно выбрать в ней все числа сентября 2010 г. Вот. Помогите пожалуйста разобраться!!!!!
Ответить с цитированием
  #2  
Старый 23.09.2010, 21:30
Регина Регина вне форума
Прохожий
 
Регистрация: 08.04.2008
Сообщения: 15
Репутация: 10
По умолчанию

Помогите пожалуйста!!!!! Хотя бы немножко!
Ответить с цитированием
  #3  
Старый 24.09.2010, 00:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

В какой строчке-то хоть ошибка происходит? Трудно однозначно сказать, что не так. Надо отлаживать по шагам с проверкой значений.
Например посмотреть что находится в каждой из пременных тут:
Код:
f=fdate+fcolor+fispol 
Не нравится мне вот такая ваша запись:
Код:
not like ("53%") 

Здесь вообще непонятен смысл Like:
Код:
not like ("65") 
Опять-же в отладке надо посмотреть, что получается в sql_khp.SQL.Text
и т.д.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 24.09.2010, 19:02
Регина Регина вне форума
Прохожий
 
Регистрация: 08.04.2008
Сообщения: 15
Репутация: 10
По умолчанию

f=fcolor+fispol срабатывает если не плюсовать туда fdate, так что с like все порядке, на отладке там все срабатывает и на форме тоже. с ним нет проблем потому что я ихние комбобоксы связываю с datasourse и adotable. а вот с датой проблема, наверное потому что тип данных другой и еще использую adoquery.
ошибку как раз показывает что невозможно строковую операцию связать с датой, примерно так.
Код HTML:
if DB_date.KeyValue<>null then if DB_date.KeyValue<>'--' then fdate:=' AND (date_pro = '''+DB_date.KeyValue+''')' else fdate:=''; f=fdate+fcolor+fispol
в 3й строчке позывает ошибку пробовала через InttoStr, но потом показывает ошибку в sql.khp. даже незнаю что делать. база данных у меня fox
Ответить с цитированием
  #5  
Старый 24.09.2010, 19:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Если я правильно понял, то в DB_date.KeyValue у вас лежит дата, тогда для сцепления строк ее надо преобразовать в строку DateToStr(DB_date.KeyValue) или DateTimeToStr(DB_date.KeyValue) если надо учитывать и время.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 25.09.2010, 13:28
Регина Регина вне форума
Прохожий
 
Регистрация: 08.04.2008
Сообщения: 15
Репутация: 10
По умолчанию

да там дата. я и так уже пробовала, но потом он выдает ошибку о несовместимости в строке где выполняется запрос sql_khp ((((((
Ответить с цитированием
  #7  
Старый 27.09.2010, 20:44
Регина Регина вне форума
Прохожий
 
Регистрация: 08.04.2008
Сообщения: 15
Репутация: 10
По умолчанию

ни у кого никак мыслей? может там параметры задать? datetostr не помогает, может он на само поле таблицы date_pro ругается? ((((((((((
Ответить с цитированием
  #8  
Старый 28.09.2010, 14:08
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

DB_date.KeyValue точно Дата?
строка :
Код:
fdate:=' AND  (date_pro = '''+DB_date.KeyValue+''')'
    else
если дата то должна быть
Код:
fdate:=' AND  (date_pro = '''+datetostr(DB_date.KeyValue)+''')'

попробуйте так:
Код:
if DB_date.KeyValue<>'--' then
      fdate:=' AND  (date_pro = :dateWhere)'
    else
     fdate:='';
     f=fdate+fcolor+fispol // отрывок кода, сюда суммируются другие выборки
      sql_khp.SQL.Text:='SELECT  kod_map, podrotpr, podrpol, name, map, nzah, 
zmf, kol, date_pro, num_pro, zstate, kod_op, color, zispol, zdateinput ' +
     ' from dd092010 where podrotpr not like ("53%") and  kod_op not like ("65") and podrpol like ("53%") ' +
     ' '+f+
     ' ORDER BY podrotpr, podrpol ' + sort;
    if sql_khp.Active then sql_khp.Active:=False;
    if DB_date.KeyValue<>'--' then sql_khp.parametrs.ParamByName('dateWhere').value:=DB_date.KeyValue;
    sql_khp.Active:=True;
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #9  
Старый 28.09.2010, 18:29
Регина Регина вне форума
Прохожий
 
Регистрация: 08.04.2008
Сообщения: 15
Репутация: 10
По умолчанию

да там дата. то есть сначала нужно в свойствах sql_khp приписать параметр а затем использовать ваш код да?
Ответить с цитированием
  #10  
Старый 29.09.2010, 10:40
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

нет просто попробовать вставить мой код. кверик сам зацепит параметр.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #11  
Старый 29.09.2010, 19:06
Регина Регина вне форума
Прохожий
 
Регистрация: 08.04.2008
Сообщения: 15
Репутация: 10
По умолчанию

нет так не работает, там дело в другом было - нужно было date_pro первести в строковый тип
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter