Поиск:

Ответ в темуСоздание новой темы Создание опроса
> dbgrid, появляются дубликаты записей 
:(
    Опции темы
AKN
Дата 3.8.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Получаю живой запрос с посощью Query и SQLUpdate При навигации (!) по гриду откуда-то появляются дублирующие записи. При использовании в гриде полосы прокрутки дублирующиеся записи сами собой исчезают. Подскажите что это за хрень, в чем может быть проблема (кроме недостаточности радиуса кривизны рук)?
PM MAIL   Вверх
Frees
Дата 3.8.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



imho может дело в отрисовке попродуй на событие скрола датасета для грида зделать DBgrid.refresh


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
AKN
Дата 3.8.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



неа... Записи именно появляются, а не глюки отрисовки. Может быть проблем в кривизне запросов в SQLUpdate?
PM MAIL   Вверх
Frees
Дата 3.8.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(AKN @  3.8.2006,  15:00 Найти цитируемый пост)
 Может быть проблем в кривизне запросов в SQLUpdate?

ну тогда выкладывай свои запросы


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
AKN
Дата 3.8.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Нет, запросы нормальные - проверил, а проблема осталась... 
вообще-то проблема вот в чем - у меня накладная, где по кнопке всавляется запись 
Код

    if Query.CanModify = true then
      begin
        Query.Last;
        Query.Insert;
        Query.Fields[0].AsInteger:=num_zap;
        Query.Fields[1].AsInteger:=INSERTED_GOOD_ID;
        Query.Fields[2].AsString:=INSERTED_GOOD_NAME;
        Query.Fields[3].AsInteger:=1; //????? ?????????? ????? ????? ???????? ? ??????? ????? ??? ? ?????
        Query.Fields[4].AsFloat:=INSERTED_PRICE_WITH_NDS;
        Query.Fields[5].AsFloat:=INSERTED_PRICE_WITHOUT_NDS;
        Query.Fields[6].AsInteger:=1;// ??????? ????????? - ????? ????????
        num_zap:=num_zap+1;
      end
    else
    ShowMessage('тра-ля-ля');


мож в этом проблема? что-то тут не так?
PM MAIL   Вверх
DimW
Дата 3.8.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



Цитата(AKN @  3.8.2006,  16:39 Найти цитируемый пост)
что-то тут не так?

конечно не так! Query.Post перед эндом поставь.

PM MAIL ICQ   Вверх
AKN
Дата 3.8.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Цитата

конечно не так! Query.Post перед эндом поставь.


у меня все идет в одной транзакции, там несколько операторов. Пост что-то решит?

PM MAIL   Вверх
Fedia
Дата 3.8.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Цитата(AKN @  3.8.2006,  17:56 Найти цитируемый пост)
Пост что-то решит?

Очень похоже на то, что в твоем проекте как раз в каком-то обработчике добавляются записи без их внесения в БД, т.е. без вызова post. А потом, в одном из обработчиков, срабатывающих при скроллинге происходит обновление данных из БД и эти записи исчезают. Возможно не правильно реализован механизм транзакций.
Вообще информации для точного ответа на твой вопрос маловато будет. 

 smile  
Цитата(AKN @  3.8.2006,  14:03 Найти цитируемый пост)
Подскажите что это за хрень, в чем может быть проблема (кроме недостаточности радиуса кривизны рук)?

А что, у кривизны рук есть свой радиус ? smile 


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
AKN
Дата 4.8.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Цитата

А что, у кривизны рук есть свой радиус ?


ну не работает же, значит радиус маловат...

Цитата

Очень похоже на то, что в твоем проекте как раз в каком-то обработчике добавляются записи без их внесения в БД, т.е. без вызова post. А потом, в одном из обработчиков, срабатывающих при скроллинге происходит обновление данных из БД и эти записи исчезают. Возможно не правильно реализован механизм транзакций.


транзакция начинается когда пользователь жмакнул кнопку "Подбор", ему вываливается формочка с выбором товара, потом по выбранному товару в одельной квери ищуться его параметры (цена, единица измерения и т.д.) и срабатывает обработчик 
Цитата

Код
Код

   if Query.CanModify = true then
      begin
        Query.Last;
        Query.Insert;
        Query.Fields[0].AsInteger:=num_zap;
        Query.Fields[1].AsInteger:=INSERTED_GOOD_ID;
        Query.Fields[2].AsString:=INSERTED_GOOD_NAME;
        Query.Fields[3].AsInteger:=1; //????? ?????????? ????? ????? ???????? ? ??????? ????? ??? ? ?????
        Query.Fields[4].AsFloat:=INSERTED_PRICE_WITH_NDS;
        Query.Fields[5].AsFloat:=INSERTED_PRICE_WITHOUT_NDS;
        Query.Fields[6].AsInteger:=1;// ??????? ????????? - ????? ????????
        num_zap:=num_zap+1;
      end
    else
    ShowMessage('тра-ля-ля');


 

который и вставляет в грид накладной выбранный товар с ценой и т.д. Организация процесса правильная? Уже думаю мож плюнуть и в стринг гриде все это организовать...
PM MAIL   Вверх
Fedia
Дата 4.8.2006, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



AKN
честно говоря, не увидел в твоем описании реализации механизма транзакций, потому попробуй сделать так, как написал DimW.
Цитата

Уже думаю мож плюнуть и в стринг гриде все это организовать...

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


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
superVad
Дата 4.8.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



стартуй транзакцию перед инсертом и комить после поста
пост поставь как DimW сказал

и вообще вместо Query юзай лучше датасет

PM MAIL   Вверх
AKN
Дата 4.8.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.11.2005

Репутация: нет
Всего: нет



Всем спасибо, буду пытаться!

PM MAIL   Вверх
Fedia
Дата 4.8.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Цитата

и вообще вместо Query юзай лучше датасет

Чем лучше то ? По иерархии классов TQuery наследник TDataSet.

AKN, вероятность того, что дублирующие записи - результат глюка DBGrid-а очень мала, но все-таки посоветую попробовать заменить DBGrid на DBGridEh из пакета компонентов EhLib. К тому же в EhLib-овском варианте грида значительно расширен функционал, который может в будущем пригодиться.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
superVad
Дата 8.8.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Цитата(Fedia @ 4.8.2006,  23:26)
Чем лучше то ? По иерархии классов TQuery наследник TDataSet.

хз, может всетаки гдето в этом и проблема.

да и функциональность TQuery там вроде и не требуется.

таки да EH рулит.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1123 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.