Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Головная боль с DBGRID, Перехлест запросов и ошибка DBGRID 
V
    Опции темы
ishimcity
Дата 2.5.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

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



Ситуация такая, есть форма 1 на ней есть DataSource1+IBTransaction1+IBDatabase1+IBDataSet1+DBGRID1
В IBDataSet1 есть запрос для вывода в DBGRID1 всеработает нормально но есть еще форма 2
На которой тоже построент запрос в обращения к первой форме на IBDataSet1 и вывод в DBGRID2 . 
Все бы нечего но в запросах 1 формы и второй разные параметры, тоесть
1 форма (ИМЯ,ФАМИЛИЯ,ОТЧЕСТВО,счет,оптата,дата оплаты)
2 форма (ИМЯ,ФАМИЛИЯ,ОТЧЕСТВО,счет,оптата) - тоесть во втором запросе отсутствует (дата оплаты поле: DATAPAY)
И когда делаю запрос со второй формы то данные появляються в первой форме в DBGRID1 и ругается что нет вызова DATAPAY.
Как разрулить такую ситуацию?Как отменить DBGRID1 чтоб не видел этот запрос от второй формы?



Это сообщение отредактировал(а) ishimcity - 2.5.2009, 15:06
PM MAIL ICQ Skype YIM   Вверх
Palladin
Дата 2.5.2009, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

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



Ну дак во втором запросе так же посылай поле Datapay но в нем укажи пустоту... мол по этому полю отображай все smile

Добавлено через 1 минуту и 45 секунд
Или при вызове со второй убивай первый(запрос)
Там видать такое дело, у тебя висит запрос на первой, в нем с датапэй, тут ты опа давай без него, но процедура на первой форме этого не понимает(или у тебя без процедуры а сразу прописано) надо её убить перед вызовом второй процедуры


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
vovk
Дата 2.5.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



DBGRID только отображает то, что находится в TDataSet. То есть если нужны разные наборы данных в одно время, то и компонента тоже нужно 2. А в 1 гриде у тебя скорее всего настроены поля для отображения вот и ругается, набор то изменился а поле которое он отобразить должен в новом наборе отсутствует.
А отключить .. да можно просто датасурс у него отвязать.


Это сообщение отредактировал(а) vovk - 2.5.2009, 15:24
PM MAIL   Вверх
ishimcity
Дата 2.5.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

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



Palladin Немсогу я его к сожалению показвать вообще так как у меня настроена сортировка по DBGRID2 если укажу сортировка не будет работать
vovk  да да ты прав, а указать в DBGRID2 немогу я там сортировку сделал как мы вчера с тобой разговаривали, 
и 2 DBDataSET не могу сделать так как если я отркдактирую данные в первом DBGRID1 сделаю Commit а во второй они всеравно не показваются пока не перегружу приложение, а вот если использоывать одну IBDataSet то все путем
Есть ли возможность отключить DBGRID вообще?временно конечно
PM MAIL ICQ Skype YIM   Вверх
vovk
Дата 2.5.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Перегружать приложение не обязательно достаточно обновить запрос. А у грида есть вроде свойство ENEBLED сам не пробовал но вроде к тому же идёт.. а так смысл то? Всё равно запрос  на выборку приходится делать и в какой он датасет данные вернёт всё равно, если транзакция на (обновление, вставку или удаление) уже завершена.

Это сообщение отредактировал(а) vovk - 2.5.2009, 15:38
PM MAIL   Вверх
ishimcity
Дата 2.5.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

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



vovk  а каким образом можно обновить запрос ? чтобы не перегружать
Enabled непрокатвает просто таблица стает недоступной всеволишь
транзакция завершается но данные не обновляются в другой таблице(форма2)


PM MAIL ICQ Skype YIM   Вверх
vovk
Дата 2.5.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну да переоткрыть, выполнить так и так придётся. Ведь ты чтоб отобразить данные на 2 форме всё равно меняеш запрос и переоткрываеш его, то есть в любом случае обращаешся за данными к БД. 
А покажи кусок кода где ошибка..

PM MAIL   Вверх
ishimcity
Дата 2.5.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

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



Запрос формы 1 к Ibdataset1
Код

 select  fc.fcnumbercount, fc.fcactualsurname, fc.fcactualname,
 fc.fcactualotchname, fc.pospok,fc.tekpok,fc.trtok, fc.kvn, 
fc.paytek,fc.razpay, rb.rbdatepay,fc.sposras
 from facecount fc
left outer join regbody rb on fc.fccodecount = rb.rbcodecount
left outer join listschabon ls on ls.codecount = fc.fccodecount
 where
fc.fcnumbercount = :num
and  ls.codestate = fc.fcamountsch 
and  fc.FCNAMECITY = :ray
and  rb.rbdatepay > :data1
and  rb.rbdatepay < :data2


Запрос формы 2 к форме 1 Ibdataset1
Код

 select DISTINCT  fc.fcnumbercount, 
fc.fcactualsurname, fc.fcactualname,
 fc.fcactualotchname, fc.pospok,fc.tekpok,fc.trtok, 
fc.kvn,fc.paytek,fc.razpay,fc.sposras
 from facecount fc
left outer join regbody rb on fc.fccodecount =rb.rbcodecount
left outer join listschabon ls on ls.codecount =fc.fccodecount
 where
ls.codestate = fc.fcamountsch
and fc.FCNAMECITY =:rays
and  rb.rbdatepay > :days1
and  rb.rbdatepay < :days2
and fc.pospok > 0


В Итоге ошибка Ibdataset1:Field'rbdatepay' not found  
PM MAIL ICQ Skype YIM   Вверх
vovk
Дата 2.5.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Не а в коде как это выглядет , ну при каких действиях запросы срабатывают.  Код делфи. Я просто попытался смоделировать чтото подобное, так у меня всё работает  smile 

Это сообщение отредактировал(а) vovk - 2.5.2009, 16:32
PM MAIL   Вверх
ishimcity
Дата 2.5.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

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



Дружище вот тебе формы 
форма 2 это первая и форма 3 это вторая
ПРИМЕР

перезалил немного нето отправил, прошу прощения
unit 2 это форма 1
unit 4 это форма 2

Это сообщение отредактировал(а) ishimcity - 2.5.2009, 16:41
PM MAIL ICQ Skype YIM   Вверх
vovk
Дата 2.5.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



И на каком действии ошибку то выдаёт?
тут?
Код

procedure TForm4.SpeedButton1Click(Sender: TObject);


ты бы просто тут текстом вылаживал ато правдв сложно разобратся по пасам без самих форм

Это сообщение отредактировал(а) vovk - 2.5.2009, 17:02
PM MAIL   Вверх
ishimcity
Дата 2.5.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

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



да верно тут 
Код


form2.ibda1.SelectSQL.Clear; // очищаю
form2.ibda1.SelectSQL.Add(memo1.text); // memo1 тут мой запрос
form2.ibda1.ParamByName('rays').AsString :=c; 
form2.ibda1.ParamByName('days1').AsString :=d;
form2.ibda1.ParamByName('days2').AsString :=dd;
form2.ibda1.Open ; // стартую


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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

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



Получилось через IBQuery сделал только подключение оставил от формы 1 и все заработало,Большое спасибо
PM MAIL ICQ Skype YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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