Работа с DBGrid

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Работа с DBGrid

Сообщение avis » 09.12.2009 00:48:35

Подскажите, пожалуйста как перенести выделенную строку в DBGrid в StringGrid
Работаю под Debian
avis
новенький
 
Сообщения: 19
Зарегистрирован: 04.11.2009 13:18:10

Re: Работа с DBGrid

Сообщение Padre_Mortius » 09.12.2009 01:02:18

В связи с тем, что телепаты в отпуске, нужны пояснения. Какай БД используется? какие компоненты для доступа к БД используются?
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Работа с DBGrid

Сообщение avis » 09.12.2009 14:23:19

приношу свои извинения, работаю с MySQL, использую SQLQuery, MySQL50Connection1, SQLTransaction1, Datasource1.
Но появилось в голове и другое решение вышеописанной проблемы, можно ли узнать какая ячейка выделена, и по номеру строки взять, допустим первую ячейку (там примари кей) и просто выполнить запрос с параметром AsString
Здесь неясен только момент нахождения значения в нужной ячейке, его же надо прочитать
avis
новенький
 
Сообщения: 19
Зарегистрирован: 04.11.2009 13:18:10

Re: Работа с DBGrid

Сообщение FedeX » 09.12.2009 14:46:30

Grid.Cells[Grid.Col,Grid.Row]?
Grid.Rows[Grid.Row].Text?
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Работа с DBGrid

Сообщение avis » 09.12.2009 21:42:01

FedeX писал(а):Grid.Cells[Grid.Col,Grid.Row]?
Grid.Rows[Grid.Row].Text?


К сожалению у DBGrid нет свойства Cells, что собственно меня и удивило
avis
новенький
 
Сообщения: 19
Зарегистрирован: 04.11.2009 13:18:10

Re: Работа с DBGrid

Сообщение Padre_Mortius » 09.12.2009 21:48:04

работать нужно не с DBGrid, а с набором данных, который отображает DBGrid
Может расскажете что вы хотите сделать?
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Работа с DBGrid

Сообщение svk12 » 10.12.2009 00:26:26

У TDBGrid'а есть

Код: Выделить всё
property SelectedField: TField read GetCurrentField write SetCurrentField;
svk12
постоялец
 
Сообщения: 409
Зарегистрирован: 09.06.2008 18:42:47

Re: Работа с DBGrid

Сообщение avis » 10.12.2009 00:47:49

svk12 писал(а):У TDBGrid'а есть

Код: Выделить всё
property SelectedField: TField read GetCurrentField write SetCurrentField;


Большое спасибо

Добавлено спустя 12 часов 7 минут 35 секунд:
все-таки еще остался вопрос, допустим таблица состоит из трех столбцов id, name, phone пользователь выделил поле name, тогда как я могу получить данные из остальных столбцов данной строки, достаточно получить id, но как?
avis
новенький
 
Сообщения: 19
Зарегистрирован: 04.11.2009 13:18:10

Re: Работа с DBGrid

Сообщение and » 10.12.2009 15:01:21

DBGrid.DataSource.Dataset.Fields[i]?
Это если значение поля нужно из текущей выделенной строки. Если из какой-то другой, то через DataLink.
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Re: Работа с DBGrid

Сообщение svk12 » 10.12.2009 15:38:17

При изменении текущей строки DBGrid изменяет текущую позицию DataSetа.
Так что, DBGrid.DataSource.Dataset.FieldByName('id').As...
svk12
постоялец
 
Сообщения: 409
Зарегистрирован: 09.06.2008 18:42:47

Re: Работа с DBGrid

Сообщение alexs » 10.12.2009 16:27:14

Вобщето вопрос - получить данные текущей строки из DBGrid-а это глупость.
Данные находятся в компоненте, наследнике DataSet - какой именно вы там используете...
а DBGrid просто отображает их.
А при работе с DataSet уже используем метод FiedlByName
а ещё лучше - во время разработки создадим поля и напрямую к ним обращаться.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Работа с DBGrid

Сообщение Astralis » 10.12.2009 18:45:16

как-то так должно быть
Код: Выделить всё
for i:=0 to DBGrid1.Columns.Count-1 do
     StringGкid1.Cell[i,Row]:=DBGrid1.DataSource.DataSet.FieldByName(DBGrid1.Columns[i].FieldName).Value;

в случае мультиселекта есть свойство DBGrid1.SelectedRows, состоящее из закладок на выделенные строки.
Аватара пользователя
Astralis
новенький
 
Сообщения: 45
Зарегистрирован: 06.06.2007 20:33:05
Откуда: Tvercity-Annet

Re: Работа с DBGrid

Сообщение avis » 10.12.2009 22:00:27

с задачей разобрался, всем кто помогал большое спасибо. решение выглядит примерно так
Код: Выделить всё
   
     dbGrid1.SelectedIndex:= 0; //здесь можно указать любой номер столбца выделенной строки, в случае необходимости можно пустить по циклу и вытащить значения всех строк
    ShowMessage(dbGrid1.SelectedField.AsString); //для себя выводил это сообщением, просто чтобы понять работает или нет 
avis
новенький
 
Сообщения: 19
Зарегистрирован: 04.11.2009 13:18:10

Re: Работа с DBGrid

Сообщение alexs » 11.12.2009 00:03:53

avis писал(а):dbGrid1.SelectedIndex:= 0; //здесь можно указать любой номер столбца выделенной строки, в случае необходимости можно пустить по циклу и вытащить значения всех строк
ShowMessage(dbGrid1.SelectedField.AsString); //для себя выводил это сообщением, просто чтобы понять работает или нет

Ребята - НЕЛЬЗЯ ТАК ДЕЛАТЬ!!!!!
Код: Выделить всё
for i:=0 to DS.Fields.Count-1 do
    ShowMessage(DS.Fields[i].AsString); //для себя выводил это сообщением, просто чтобы понять работает или нет  [/quote]

где DS это подключенный к гриду набор данных.
Вы б ещё через луну звонить стали...
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Работа с DBGrid

Сообщение avis » 11.12.2009 02:49:28

alexs писал(а):
avis писал(а):dbGrid1.SelectedIndex:= 0; //здесь можно указать любой номер столбца выделенной строки, в случае необходимости можно пустить по циклу и вытащить значения всех строк
ShowMessage(dbGrid1.SelectedField.AsString); //для себя выводил это сообщением, просто чтобы понять работает или нет

Ребята - НЕЛЬЗЯ ТАК ДЕЛАТЬ!!!!!
Код: Выделить всё
for i:=0 to DS.Fields.Count-1 do
    ShowMessage(DS.Fields[i].AsString); //для себя выводил это сообщением, просто чтобы понять работает или нет  [/quote]

где DS это подключенный к гриду набор данных.
Вы б ещё через луну звонить стали...


Объясни в чем принципиальная разница? Подключен DataSource вот только свойства Fields я так и не нашел у него
avis
новенький
 
Сообщения: 19
Зарегистрирован: 04.11.2009 13:18:10

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 217

Рейтинг@Mail.ru