Работа с DBGrid

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

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

avis
новенький
Сообщения: 19
Зарегистрирован: 04.11.2009 12:18:10

Работа с DBGrid

Сообщение avis »

Подскажите, пожалуйста как перенести выделенную строку в DBGrid в StringGrid
Работаю под Debian
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

В связи с тем, что телепаты в отпуске, нужны пояснения. Какай БД используется? какие компоненты для доступа к БД используются?
avis
новенький
Сообщения: 19
Зарегистрирован: 04.11.2009 12:18:10

Сообщение avis »

приношу свои извинения, работаю с MySQL, использую SQLQuery, MySQL50Connection1, SQLTransaction1, Datasource1.
Но появилось в голове и другое решение вышеописанной проблемы, можно ли узнать какая ячейка выделена, и по номеру строки взять, допустим первую ячейку (там примари кей) и просто выполнить запрос с параметром AsString
Здесь неясен только момент нахождения значения в нужной ячейке, его же надо прочитать
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

Grid.Cells[Grid.Col,Grid.Row]?
Grid.Rows[Grid.Row].Text?
avis
новенький
Сообщения: 19
Зарегистрирован: 04.11.2009 12:18:10

Сообщение avis »

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


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

Сообщение Padre_Mortius »

работать нужно не с DBGrid, а с набором данных, который отображает DBGrid
Может расскажете что вы хотите сделать?
svk12
постоялец
Сообщения: 411
Зарегистрирован: 09.06.2008 18:42:47

Сообщение svk12 »

У TDBGrid'а есть

Код: Выделить всё

property SelectedField: TField read GetCurrentField write SetCurrentField;
avis
новенький
Сообщения: 19
Зарегистрирован: 04.11.2009 12:18:10

Сообщение avis »

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

Код: Выделить всё

property SelectedField: TField read GetCurrentField write SetCurrentField;


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

Добавлено спустя 12 часов 7 минут 35 секунд:
все-таки еще остался вопрос, допустим таблица состоит из трех столбцов id, name, phone пользователь выделил поле name, тогда как я могу получить данные из остальных столбцов данной строки, достаточно получить id, но как?
Аватара пользователя
and
постоялец
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Сообщение and »

DBGrid.DataSource.Dataset.Fields[i]?
Это если значение поля нужно из текущей выделенной строки. Если из какой-то другой, то через DataLink.
svk12
постоялец
Сообщения: 411
Зарегистрирован: 09.06.2008 18:42:47

Сообщение svk12 »

При изменении текущей строки DBGrid изменяет текущую позицию DataSetа.
Так что, DBGrid.DataSource.Dataset.FieldByName('id').As...
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Вобщето вопрос - получить данные текущей строки из DBGrid-а это глупость.
Данные находятся в компоненте, наследнике DataSet - какой именно вы там используете...
а DBGrid просто отображает их.
А при работе с DataSet уже используем метод FiedlByName
а ещё лучше - во время разработки создадим поля и напрямую к ним обращаться.
Аватара пользователя
Astralis
новенький
Сообщения: 45
Зарегистрирован: 06.06.2007 20:33:05
Откуда: Tvercity-Annet
Контактная информация:

Сообщение Astralis »

как-то так должно быть

Код: Выделить всё

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, состоящее из закладок на выделенные строки.
avis
новенький
Сообщения: 19
Зарегистрирован: 04.11.2009 12:18:10

Сообщение avis »

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

Код: Выделить всё

    
     dbGrid1.SelectedIndex:= 0; //здесь можно указать любой номер столбца выделенной строки, в случае необходимости можно пустить по циклу и вытащить значения всех строк
    ShowMessage(dbGrid1.SelectedField.AsString); //для себя выводил это сообщением, просто чтобы понять работает или нет 
 
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение 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 это подключенный к гриду набор данных.
Вы б ещё через луну звонить стали...
avis
новенький
Сообщения: 19
Зарегистрирован: 04.11.2009 12:18:10

Сообщение avis »

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 я так и не нашел у него
Ответить