Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перемещение по строкам, Перемещение по строкам в DBGrid 
:(
    Опции темы
Flaer
Дата 4.9.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Такая проблемка: Чет совсем не сооброжу как передвигаться по строкам таблицы.
По столбцам строки получается, а вот по строкам таблицы нет(

Это сообщение отредактировал(а) Flaer - 4.9.2008, 13:43
PM MAIL ICQ   Вверх
Frees
Дата 4.9.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

DBGrid.datasorce.dataset.first
DBGrid.datasorce.dataset.next
DBGrid.datasorce.dataset.prior
DBGrid.datasorce.dataset.last
DBGrid.datasorce.dataset.locate



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


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Flaer, DBGrid - это всего-лишь компонент отображения информации. Если тебе нужно получить саму инфу непосредственно, то "смотреть" нужно не на DBGrid, а туда, откуда DBGrid берет эту инфу. Т.е. на TTable или TQuery (что ты там используешь?)

Даже на dataset, как предложил Frees, "смотреть" можно, но не правильно, т.к. dataset тоже берет эту инфу откуда-то. Так не проще ли сразу "туда" и глянуть?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Данкинг
Дата 4.9.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Перемещаешься по таблице, которая у тебя отображается в гриде.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Flaer
Дата 4.9.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хм...
спасибо за ответ
ну незнаю насколько проще ) 
мне просто нужно удалить посторяющиеся строки.Думал здесь проще будет.
Искал где же индекс на строку, а тут вот так ))  

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


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(Flaer @  4.9.2008,  14:16 Найти цитируемый пост)
мне просто нужно удалить посторяющиеся строки.Думал здесь проще будет.
В DBGrid ты не удалишь строки, потому как эти, как ты выразился, "строки" - это записи в БД. Поэтому удалять нужно именно в БД. Можно с помощью TTable, можно в помощью запроса DELETE в TQuery. Ты, кстати, так и не указал каким образом ты получаешь данные в DBGrid.

Добавлено через 1 минуту и 48 секунд
Кстати, если ты используешь TQuery, то добавив всего одно слово DISTINCT в запрос, ты не будешь получать повторы.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Flaer
Дата 4.9.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ADOTable и DBGrid лежат у меня на разных формах.
Связал я их  из через  DataSourse.
Я из таблицы выдергиваю некоторыестолбцы, в результате чего могу появляться дублирующие записи(строки      ) . От этого мне нужно освободиться. Если подскажите путь проще буду очень признателен 
PM MAIL ICQ   Вверх
Poseidon
Дата 4.9.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(Flaer @  4.9.2008,  14:30 Найти цитируемый пост)
Если подскажите путь проще буду очень признателен 
Вместо ADOTable используй ADOQuery. Там, в SQL напиши что-то похожее на:

Код
SELECT DISTINCT stolbets1, stolbets2
FROM tablitsa

Все остальное у ADOQuery установи такое же как и у ADOTable. Сам ADOTable можно удалить.
Может быть придется немного подкорректировать запрос, т.к. не совсем понял из фразы "в результате чего могу появляться дублирующие записи" в результате чего это они так могут появится, если ты только отображаешь, а не записываешь данные? И "дублирующие" - это как? Один столбец похож на второй или одна строка (захватывающая оба столбца) похожа на другую строку? Во-втором случае зарос должен "прокатить".



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Flaer
Дата 4.9.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я не знаю заранее какие поля остануться от таблицы ) 


поле1 поле2 поле3
   x         x        y
   x         x        z
   x         y        z 

Удаляю из таблицы БД поле3 , в результат чего 
полчаю в таблице, повторяющиеся запси.
такова суть дела ) 

наверно выгядит дико ) 
но это реальная задача 
PM MAIL ICQ   Вверх
Poseidon
Дата 4.9.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Ну вот мой вышеуказанный запрос и сделает что надо.

Код

SELECT DISTINCT pole1, pole2
FROM tablitsa

pole1 и pole2 укажи свои названия "столбцов". tablitsa - название твоей таблицы. Это напиши в ADOQuery.SQL (можно прямо в инспекторе). Вся остальная работа с ADOQuery такая же как и с ADOTable.

В результате из приведенной тобой таблицы ты получишь только

поле1 поле2 
   x         y      


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Flaer
Дата 4.9.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я удалил поле3
в результате чего получил:
поле1 поле2 
   x         x        
   x         x       
   x         y   


Дублирование нужно исключить и получить вот это:

поле1 поле2   
   x         x     
   x         y    
PM MAIL ICQ   Вверх
Poseidon
Дата 4.9.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Ну так и будет. Это я постом выше ошибся... Прошу прощения.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Flaer
Дата 4.9.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сейчас проверю ))


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


Новичок



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

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



сделал так 

with ADOQuery do
    begin
     SQL.Clear;
     SQL.Add('SELECT DISTINCT '+ StrokaNameFields );
     SQL.Add('FROM '+ ADOTable.TableName  );
     ExecSQL;
    end;


StrokaNameFields - содержит имена полей
ADOTable.TableName - получает имя таблицы

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


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Flaer @  4.9.2008,  17:52 Найти цитируемый пост)
и чет не работает (  

Какая ошибка?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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