Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > обновление dbGrid


Автор: Martisha 10.12.2008, 10:16
Доброго дня всем!!!
Использую Oracle,Delphi7,подключаюсь к базе с помощью ODAC..
нужно сделать Refresh dbGrid, написала код, ошибок не вылазит, но ничего и не происходит

Код

procedure TForm2.Button1Click(Sender: TObject);
begin
  ORAQuery1.Close;
  ORAQuery1.SQL.Clear;
  ORAQuery1.SQL.Add('select * from traffic');
  ORAQuery1.ExecSQL;
end;

Автор: Данкинг 10.12.2008, 11:50
А если вместо ExecSQL сделать Open ?

Автор: Martisha 10.12.2008, 13:30
Цитата(Данкинг @  10.12.2008,  11:50 Найти цитируемый пост)
А если вместо ExecSQL сделать Open ? 

так же, реакции никакой 
может есть какой то другой способ?

Автор: Akella 10.12.2008, 17:34
а какая должна быть реакция? Что, даже грид не переоткрывается?

Добавлено через 1 минуту и 13 секунд
в таблице небось записей стопицотыщ, а тебе в грид попадают только те, которые видимы в нём, в гриде. Может fetch?

Автор: Martisha 11.12.2008, 08:18
Цитата(Akella @  10.12.2008,  17:34 Найти цитируемый пост)
а какая должна быть реакция?

я бы хотела чтоб он обновился

Цитата(Akella @  10.12.2008,  17:34 Найти цитируемый пост)
Что, даже грид не переоткрывается?

переоткрывается вроде, только в базе если были записи, то в гридеони отображаются..потом если я их удаляю из базы(то есть там совсем  пусто), пытаюсь обновить гриде записи все равно отображаются  smile  не пойму почему так
Цитата(Akella @  10.12.2008,  17:34 Найти цитируемый пост)
Может fetch? 

может, а что это? 

Автор: Akella 11.12.2008, 12:55
Может тебе рано ещё в оракл, ты всё рам не знаешь ни кого  smile  и там транзакциями нужно управлять

Добавлено через 30 секунд
Я и сам-то в оракл не лезу, сижу себе потихоньку на firebird`е  smile 

Автор: Martisha 11.12.2008, 13:27
Цитата(Akella @  11.12.2008,  12:55 Найти цитируемый пост)
Я и сам-то в оракл не лезу, сижу себе потихоньку на firebird`е    

другого выбора нет, на работе его используют((

Автор: Данкинг 11.12.2008, 13:52
Цитата(Akella @  11.12.2008,  12:55 Найти цитируемый пост)
и там транзакциями нужно управлять

Так необязательно же (хотя я тоже не спец по Ораклу; единственное, что я написал, так это конвертер из DBF в Оракл  smile )

Автор: Akella 11.12.2008, 13:59
Код

procedure TForm2.Button1Click(Sender: TObject);
begin
  ORAQuery1.Close;
  ORAQuery1.SQL.Clear;
  ORAQuery1.SQL.Add('select * from traffic');
  ORAQuery1.Open;

  ORAQuery1.fetch;
end;

что такое Fetch, для чего он и почему не ВСЕ стопицоттыщ записей попадают в грид?
Когда ты выполняешь запрос к серверу
Код
select * from traffic


а там один миллион записей.... пожалей пользователя....
по умолчанию тебе в НД (набор данных, DataSet) попадут не все 1 млн записей, а какая-то часть. Какая? Ну... зависит от настроек самого НД, может там есть для этого свой-со какое-нибудь, а может попадёт количество записей, которые поместятся в видимой области грида.
Потом пользователь начинает прокручивать грид.... и НД начинает тянуть остальные записи из базы по мере надобности. И сеть не  нагружается, и сервер не нагружается, и клиент не нагружается...
А если после открытия НД выполнить Fetch ("отфетчить" данные, как некоторые говорят), то в НД попадут все записи из таблицы базу... память клиентского компьютера... сама понимаешь.. 

Автор: Martisha 11.12.2008, 14:48
Цитата(Akella @  11.12.2008,  13:59 Найти цитируемый пост)
что такое Fetch, для чего он и почему не ВСЕ стопицоттыщ записей попадают в грид?
Когда ты выполняешь запрос к серверу

дл того я и делаю запрос по датам  smile  чтоб не все попадали, все то программа явно не переварит  smile 
Цитата(Akella @  11.12.2008,  13:59 Найти цитируемый пост)
Потом пользователь начинает прокручивать грид.... и НД начинает тянуть остальные записи из базы по мере надобности. И сеть не  нагружается, и сервер не нагружается, и клиент не нагружается...

именно так ипроисходит)

Цитата(Akella @  11.12.2008,  13:59 Найти цитируемый пост)
А если после открытия НД выполнить Fetch ("отфетчить" данные, как некоторые говорят), то в НД попадут все записи из таблицы базу... память клиентского компьютера... сама понимаешь..  

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

Автор: Martisha 17.12.2008, 11:26
Цитата

ORAQuery1.fetch;

не помогает(

Автор: Frees 17.12.2008, 11:44
может ты не тот квери переоткрываеш

попробуй так
Код

procedure TForm2.Button1Click(Sender: TObject);
begin
  DBGrid.DataSource.Dataset.Close;
  //ORAQuery1.SQL.Clear;  запрос если не меняш его можно не переписывать
  //ORAQuery1.SQL.Add('select * from traffic');
  DBGrid.DataSource.Dataset.Open;
end;


ODAC не использую но мне кажется у него как и у FIB должно быть что то типо ReopenLocate

Автор: Martisha 17.12.2008, 12:44
Цитата(Frees @  17.12.2008,  11:44 Найти цитируемый пост)
попробуй так

все равно не получается(

Автор: Frees 17.12.2008, 12:52
Цитата(Martisha @  11.12.2008,  10:18 Найти цитируемый пост)
переоткрывается вроде, только в базе если были записи, то в гридеони отображаются..потом если я их удаляю из базы(то есть там совсем  пусто), пытаюсь обновить гриде записи все равно отображаются  smile  не пойму почему так

Не закомитил транзакцию в которой были удалены записи!

больше нет вариантов, чудес то же вроде не бывает

Автор: pseud 17.12.2008, 13:09
Цитата(Frees @  17.12.2008,  12:52 Найти цитируемый пост)
Не закомитил транзакцию в которой были удалены записи!


не закоммитила. это точно. 
Цитата(Martisha @  11.12.2008,  08:18 Найти цитируемый пост)
потом если я их удаляю из базы(то есть там совсем  пусто)

здесь поподробнее. как и где?

Автор: Martisha 17.12.2008, 14:09
Цитата(pseud @  17.12.2008,  13:09 Найти цитируемый пост)
не закоммитила. это точно. 

что это значит?

Цитата(pseud @  17.12.2008,  13:09 Найти цитируемый пост)
здесь поподробнее. как и где? 

в dbGrig-е у меня отображается таблица, а если я полностью удаляю данные из таблицы, они почему то отображаются в dbGrid

Автор: Frees 17.12.2008, 14:12
Цитата(Martisha @  17.12.2008,  16:09 Найти цитируемый пост)
а если я полностью удаляю данные из таблицы

вот про это подробнее!! где как удаляеш?

Добавлено через 1 минуту и 40 секунд
Цитата(Martisha @  17.12.2008,  16:09 Найти цитируемый пост)
что это значит?

ты удалила записи в рамках транзакций а что бы все остальные увидили что записи удалились транзакцию надо подтвердить(закомитить)

Автор: Martisha 17.12.2008, 14:23
Цитата(Frees @  17.12.2008,  14:12 Найти цитируемый пост)
вот про это подробнее!! где как удаляеш?

к базеподключаюсь с пом-ю pl/sql developer, и в нем удаляю все содуржимое таблицы: delete from traffic
  

Цитата(Frees @  17.12.2008,  14:12 Найти цитируемый пост)
транзакцию надо подтвердить(закомитить) 

как же это сделать?

Автор: Frees 17.12.2008, 14:32
Цитата(Martisha @  17.12.2008,  16:23 Найти цитируемый пост)
к базеподключаюсь с пом-ю pl/sql developer, и в нем удаляю все содуржимое таблицы: delete from traffic

не пользовался таким софтом... попробуй кнопочку комит(Commit) у него поискать после удаления

Автор: Martisha 17.12.2008, 14:41
Цитата(Frees @  17.12.2008,  14:32 Найти цитируемый пост)
не пользовался таким софтом... попробуй кнопочку комит(Commit) у него поискать после удаления 

ок) поищу) значит дело только в этом?

Автор: pseud 17.12.2008, 14:42
Цитата(Frees @  17.12.2008,  14:32 Найти цитируемый пост)
не пользовался таким софтом... попробуй кнопочку комит(Commit) у него поискать после удаления

+1. так и называется Commit (F10) - зелененькая стрелочка

P.S. F10 - это опционально

Добавлено через 55 секунд
либо 
\ГлавноеМеню\Session\Commit

Автор: Martisha 17.12.2008, 14:48
Цитата(Frees @  17.12.2008,  14:32 Найти цитируемый пост)
 попробуй кнопочку комит(Commit) у него поискать после удаления 

действительно нашла) после удаления нажимаю commit и после кликаю "обновить" уже на форме, dbGrid очистился!!!!  smile

Добавлено через 6 минут и 42 секунды
все, тема закрыта, всем спасибо за помощь  smile 

Автор: Akella 17.12.2008, 19:41
Martisha, тебе нужно для начала хоть маломальски почитать и понять что такое транзакции, зачем они нужны, что такое клиент-сервер и с чем его едят! А то получается, что ты сразу села за руль и хочешь ехать. Машина почему-то не едет. Участники движения (форумчане тоюишь) тебе хотят помочь, дают подсказки. Но ты даже не знаешь, что такое кулиса и куда её крутить и вообще зачем? А может дело не в кулисе? А может её и не крутить нужно, а подёргать? А тебе вот уже советуют её подёргать, ты дёргаешь но толку нету. Знаешь почему? Потому, что ты не выполнила несколько требований:
а) забыла выжать сцепление
б) не изучила, как правильно переключить скорость.
Мало того, бывают автомобили с коробкой автоматом. И как тут быть?
Тебе подсказали, что нужно выжать сцепление и как переключить первую скорость. Но вот незадача... вдруг придётся ехать с прицепом, да ещё и на второй скорости.

Купи себе книгу по ораклу. Хорошо если там будет описание, как работать с ораклом из дельфи через те компоненты, с которыми ты щас работаешь.

Автор: Martisha 18.12.2008, 08:21
Цитата(Akella @  17.12.2008,  19:41 Найти цитируемый пост)
Купи себе книгу по ораклу. Хорошо если там будет описание, как работать с ораклом из дельфи через те компоненты, с которыми ты щас работаешь. 

изучаю уже..скоро английский выучу уж)

Автор: Akella 18.12.2008, 09:04
книгу на английском читаешь? smile 

Автор: Martisha 18.12.2008, 11:22
Цитата(Akella @  18.12.2008,  09:04 Найти цитируемый пост)
книгу на английском читаешь?   

нет, по ODAC на английском (там аж 500 листов  smile ), а по ораклу на русском уж  smile 

Автор: Данкинг 18.12.2008, 11:48
Цитата(Akella @  17.12.2008,  19:41 Найти цитируемый пост)
Купи себе книгу по ораклу. Хорошо если там будет описание, как работать с ораклом из дельфи через те компоненты, с которыми ты щас работаешь. 

Например - что за книга такая, в которой описывается работа из Дельфи с Ораклом? smile Кстати, по Ораклу как-то вообще мало книг продаётся, да и те переводные, а наши авторы почему-то про него не пишут.

Добавлено через 1 минуту и 5 секунд
Цитата(Akella @  18.12.2008,  09:04 Найти цитируемый пост)
книгу на английском читаешь? 

Да хоть на каком, только чтобы нормальная книга была. smile 

Автор: Martisha 18.12.2008, 12:14
Цитата(Данкинг @  18.12.2008,  11:48 Найти цитируемый пост)
Например - что за книга такая, в которой описывается работа из Дельфи с Ораклом?

это есть  в документации по ODAC? только там на английском все
Цитата(Данкинг @  18.12.2008,  11:48 Найти цитируемый пост)
Добавлено через 1 минуту и 5 секунд

Цитата(Akella @  18.12.2008,  09:04 )
книгу на английском читаешь? 


Да хоть на каком, только чтобы нормальная книга была.  

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

Автор: Akella 18.12.2008, 14:15
Цитата(Данкинг @  18.12.2008,  11:48 Найти цитируемый пост)
Например - что за книга такая, в которой описывается работа из Дельфи с Ораклом?

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

Добавлено через 2 минуты и 1 секунду
Цитата(Martisha @  18.12.2008,  12:14 Найти цитируемый пост)
она может и нормальная, плохо когда языка не знаешь..переводчик он же тоже каряво переводит и получается ерунда 

Мда... жаль конечно. Но ты это.. всё равно не стесняйся задавать вопросы. Если где-то я перегнул палку со своими учениями по поводу книг или поиска, то извини smile 

Автор: Martisha 18.12.2008, 14:29
Цитата(Akella @  18.12.2008,  14:15 Найти цитируемый пост)
Мда... жаль конечно. Но ты это.. всё равно не стесняйся задавать вопросы. Если где-то я перегнул палку со своими учениями по поводу книг или поиска, то извини   

все  smile я спрашиваю и еще надоем со своими вопросами...вы от меня вообще так просто не отделаетесь!!!  smile 

Автор: Akella 18.12.2008, 14:40
Это мы ещё посмотрим(с) smile 

Автор: Martisha 18.12.2008, 14:51
Цитата(Akella @  18.12.2008,  14:40 Найти цитируемый пост)
Это мы ещё посмотрим(с)   

 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)