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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2013, 19:04   #1
danka123
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 29
По умолчанию Неправильно определен объект Parameter.

Привет всем. Возникла бредовая ошибка
Неправильно определен объект Parameter. Предоставлены несовместимые или неполные сведения

весь код выложить не могу, поэтому описываю ситуацию

Программа парсит темы на форумах, записывает их в бд, потом выводит.
Сразу говорю что:
1. Программа работает
2. Параметры не используются
3. За все время встречаюсь с подобной ошибкой впервые, хотя стиль написания и логика кода практически всегда подобная.

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

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

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

Последний раз редактировалось danka123; 28.09.2013 в 19:06.
danka123 вне форума Ответить с цитированием
Старый 28.09.2013, 19:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Параметры не используются
Т.е. в запросе не используются параметры?
Цитата:
ошибка срабатывает просто на ровном месте
Хотя бы скажи что в этом месте прописано.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2013, 19:46   #3
danka123
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 29
По умолчанию

Есть такой кусок
Код:
 ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select * from show');
  ADOQuery1.Open;
  ADOQuery1.First;

  for j:=1 to ADOQuery1.RecordCount do
  begin
       ADOQuery2.Close;
       ADOQuery2.sql.Clear;
       ADOQuery2.SQL.Add('select * from hide where topic =   "'+ADOQuery1.fieldbyname('topic').AsString+'"');
       ADOQuery2.Open;
       if ADOQuery2.RecordCount >=1  then
       ADOQuery1.Delete;

       ADOQuery1.Next;
   end;
добавления так сделаны:
Код:
ADOQuery1.Insert;
ADOQuery1.FieldByName('поле').AsString := 'кашамалаша';
AADOQuery1.Post;


Это все большое место и есть одна большая процедура
вот я запускаю программу
1. нажимаю старт
2. идет отсчет времени обновления
3. пришло время - если до этого времени, не перегнал темы, все чистится, получаю естественно тоже самое
3. пришло время - если посмотрел список и очистил (перегоном) в следующий раз динамически получу тоже самое, но 2 таблицы сверятся, совпадения в одной удалятся, и визуально ничего не получу.
4. ну и так программа работает дальше.

т.е я не могу отследить на каком конкретно месте, темы в настройках разные ставлю галочками.
т.е я сначала могу ссылку одну получать, могу хоть за 10 топиками мониторить. и все работает.
потом выбивает ошибку. не на каком то конкретном сайте и на каком то определенном этапе. а вообще рандомно)

Последний раз редактировалось danka123; 28.09.2013 в 19:53.
danka123 вне форума Ответить с цитированием
Старый 28.09.2013, 19:56   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
2. Параметры не используются
начните использовать и ошибка пропадет.
eval вне форума Ответить с цитированием
Старый 28.09.2013, 20:01   #5
danka123
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 29
По умолчанию

eval, не начну использовать из принципа, использую их только в экстренных случаях, например с датами..

почему тогда ошибка сразу не вылазит? а может час проработать, или пол часа, или 2 минуты и выбить ошибку.
danka123 вне форума Ответить с цитированием
Старый 28.09.2013, 21:28   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
почему тогда ошибка сразу не вылазит?
Наверное потому что ADOQuery1.fieldbyname('topic').AsSt ring неожиданно начинает возвращать что-то с двоеточием впереди.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2013, 21:42   #7
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

(" =)(" и двоеточие в любом месте ADOQuery1.fieldbyname('topic').AsSt ring
ReportCube вне форума Ответить с цитированием
Старый 28.09.2013, 21:56   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
почему тогда ошибка сразу не вылазит?
а просто не повезло, если бы сразу вылезло, то давно бы встали на путь праведный (параметры заюзали), но вы с принципами, продолжайте прыгать на кактус..
eval вне форума Ответить с цитированием
Старый 29.09.2013, 00:14   #9
danka123
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 29
По умолчанию

Stilet, вы имеете ввиду в значение поля попадает один из этих символов? сейчас просто добавил кнопку, в ней добавил строку "(..." добавилась.

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

Поэтому еслибы дело было в символах, выбивало бы ошибку эту сразу на определенном топике по определенной ссылке.


Заметил то, что после того как выбивает ошибку, как я уже писал при попытке сделать новый запуск сразу, выбивает на том же месте, причем на том же сайте (в статусбаре я текущий вывожу). если сделать еще раз и еще раз старт. ошибка будет все же на определенном сайте (если сайт по очереди 5ый, то в цикле прогонятся первые 4, на 5ом выдаст ошибку, с каждым разом и сайты разные) но если я закрою и открою программу все опять до поры до времени ок.

помимо этого заметил я еще вот что. есть у меня кнопка, которая после получения списка новых тем в таб1 выводит это все перед глазом (если этих тем уже нет в таб2). я смотрю, и если хочу нажимаю очистить (она перегоняет это все в таб2) таб1 очищает, и со следующим обновлением именно этих тем уже не будет.
и вот если после ошибки, я нажму эту кнопку, вылазит такая ошибка
ADOQuery2: cannot ferform this operation on a closed dataset
хочу заметить, что единственное место, где я упоминаю о ADOQuery2 это на OnCreate делаю запрос общий на выборку обычный. и в самом цикле 1 раз, выше этот код я приводил, там где таб2 фильтруется по циклу из таб1. Все больше нигде нет. А да ну и при клике на эту кнопку
вот код, но опять же здесь я уже ловлю ошибку
Код:
ADOQuery1.Close;
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add('select * from show');
 ADOQuery1.Open;
 ADOQuery1.First;
 for i:=1 to ADOQuery1.RecordCount do
 begin
   ADOQuery2.Insert;
   ADOQuery2.FieldByName('topic').AsString := ADOQuery1.fieldbyname('topic').AsString;
   ADOQuery2.FieldByName('link').AsString := ADOQuery1.fieldbyname('link').AsString;
   ADOQuery2.FieldByName('site').AsString := ADOQuery1.fieldbyname('site').AsString;
   ADOQuery2.post;

   ADOQuery1.Delete;
   ADOQuery1.Next;
 end;
и опять же повторюсь) это все дело работает) до щучьего веления)

Последний раз редактировалось danka123; 29.09.2013 в 00:18.
danka123 вне форума Ответить с цитированием
Старый 29.09.2013, 00:52   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
в значение поля попадает один из этих символов?
до поля дело еще не доходит, вам провайдер еще до поля отлуп делает

так запасемся попкорном, думаю тут сериал будет многосерийный
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Flex/AS3 Термин не определен и не имеет свойств. Amidamaru Общие вопросы Web 4 07.01.2013 09:19
Неправильно определен объект Parameter boomko55 Помощь студентам 2 07.06.2012 15:14
wc идентификатор не определен Sylar9 Win Api 10 06.04.2012 15:20
Определен. интеграл Dimon2010 Помощь студентам 2 18.05.2010 16:40
Как сделать чтобы через опред. время выполнялось определен. действие? zotox Помощь студентам 1 24.03.2009 17:27