Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.07.2010, 21:32
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию как извлечь данные из таблицы?

Никогда не работал с БД, имею только общее представление о них. Значит есть БД, в ней 1 таблица, подключаюсь через ADO.

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

Может объяснил хитро, если кому непонятно могу расписать подробнее. Спасибо всем заранее
Ответить с цитированием
  #2  
Старый 20.07.2010, 21:46
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от T-dayne
Никогда не работал с БД, имею только общее представление о них. Значит есть БД, в ней 1 таблица, подключаюсь через ADO.

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

Может объяснил хитро, если кому непонятно могу расписать подробнее. Спасибо всем заранее
Код:
for i:=1 to adotable1.recordcount do
begin
(незнаю как добавлять в стринг грид напишу на лейбл)
label1.caption:=adotable1.fields.fields[0].asString - первое поле;
label2.caption:=adotable1.fields.fields[1].asString - соответственно второе
label3.caption:=adotable1.fields.fields[2].asString - и третье
// после записи переходим на следующую строку в таблице
adotable1.next;
end;

Попробуй думаю разберешься
Ответить с цитированием
  #3  
Старый 20.07.2010, 21:56
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

мда...

Код:
ADOTable1.Active := True;
ADOTable1.First;
StringGrid1.ColCount := ADOTable1.Fields.Count;
StringGrid1.RowCount := 0;
While Not ADOTable1.EOF Do
  Begin
    StringGrid1.RowCount := StringGrid1.RowCount+1;
    For I := 0 To ADoTable1.Fields.Count-1 Do
       StringGrid1.Cells[I,StringGrid1.RowCount-1] := ADoTable1.Fields[i].AsString;
    ADOTable1.Next;
  End;
ADOTable1.Active := False;

как-то так.
Только нафига? для отображения данных существует такой компонент, как TDBGrid.
Ответить с цитированием
  #4  
Старый 20.07.2010, 21:57
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

мне не надо отображать, мне надо работать с данными из таблицы.
Ответить с цитированием
  #5  
Старый 20.07.2010, 22:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от T-dayne
мне не надо отображать, мне надо работать с данными из таблицы.

Хммм... а может тогда лучше почитать про SQL, все сделать запросом и взять готовый результат?
Ответить с цитированием
  #6  
Старый 20.07.2010, 22:33
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

windaws
хм, способ выглядит простым, но у меня не работает, делаю:
Код:
edit1.Text:=adotable1.Fields.Fields[0].AsString;
выдает фатальную ошибку...
добавлено через 5 минут

Доперло как нужно, ошибся в названиях столбцов

Последний раз редактировалось T-dayne, 20.07.2010 в 22:40.
Ответить с цитированием
  #7  
Старый 21.07.2010, 09:10
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

как уже сказали тут намного проще использовать SQL-запрос для этих целей.
тот же ADOQuery c запросом Select Field3 from TableName
Дальше по циклу проходишь по нему и пихаешь данные куда тебе надо, при этом сразу можешь ограничить получаемые данные включив в SQL where
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #8  
Старый 21.07.2010, 20:04
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Еще один вопрос по теме, как получать файлы знаю, скажите теперь как удалить целую строку из таблицы, также посредством ADOTable. Это возможно?
Ответить с цитированием
  #9  
Старый 21.07.2010, 20:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

У ADOTable есть метод - Delete.
Надо "встать" на нужную строку и вызвать этот метод.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter