|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
DbGrid как обратиться к конкретной ячейке
Вопрос!DbGrid как обратиться к конкретной ячейке??Бд создал в Access связал через BDE
|
#2
|
|||
|
|||
Обращайся через набор данных.
НАпример. Table.FieldByName('name').AsString - значение поля name в текущей записи (например на которой стоит курсор). Для перехода на нужную запись используй например Table.RecNo - номер строки или используй функцию locate и ищи по конкретным условиям. |
#3
|
||||
|
||||
Код:
Table.RecNo:=<номер нужной строки>; Table.Fields[<номер нужного поля>].Value; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#4
|
|||
|
|||
а если нет ни тейблов ни sql компонент? у меня даные експортируютса (если можна так сказать) с .xml (используя XML Mapper) и заливаютса в грид. я использую на форме DataSource1, ClientDataSet1, XMLTransform1, DBGrid2. после обработки в XML Mapper пишу вот такой код на онклик Button:
Код:
procedure TForm1.Button2Click(Sender: TObject); begin XMLTransform1.SourceXMLFile :='.\xml.xml'; \\ исходный .xml-файл XMLTransform1.TransformationFile :='.\xmlToDp.xtr'; \\ переработаний c XML Mapper ClientDataSet1.XMLData := XMLTransform1.Data; ClientDataSet1.Active:=true; end; мне нужно тепер для всех строк (количество которых зарание не извесно, но можно посчитать в гриде, естесвенно, после вышеописоного кода), что у меня есть, cделать инсерт в БД (которая на MySQL). вот первий грид у меня уже на компоненте SQL и соответствено со своим DataSource. Вопщем, я понимаю что нада цикл через for, исерт я делать умею... мне нужно циклом перебрать все строки в гриде2 (который експортнут з .xml) и значения каждого столбца вставить в определёные поля определьонной таблицы.... если кто-то меня понял)))))))) напишите пожалуста прогр.код на етот цыкл --------------------------------------------------------------------------------------------------- вопрсос изменилса - нужен цыкл чтоб перебрат все строки с первой по последнюю, но бес квери и тейблов)) Последний раз редактировалось chornu, 03.06.2010 в 21:59. |
#5
|
|||
|
|||
Цикл не по гриду а по DataSet надо делать на который ссылается грид.
Как пример: Код:
if mt1.IsEmpty=false then begin mt1.First; repeat F_preview.mt1.edit; F_preview.MT1.AppendRecord( [MT1ID_component.AsInteger,MT1ID_parent.AsInteger, MT1ParentClass.AsString,MT1ParentObject.AsString, MT1ParentName.AsString,MT1ComponentClass.AsString, MT1ComponentName.AsString,MT1ComponentTop.AsInteger, MT1ComponentLeft.AsInteger,MT1ComponentWidth.AsInteger, MT1ComponentHeigth.AsInteger,MT1ComponentText.AsString,MT1ComponentCheck.AsBoolean, MT1ComponentChecked.AsBoolean,MT1Spr_Id.AsInteger,MT1Spr_Field.AsString, MT1typeObject.AsInteger]); mt1.Next; until mt1.Eof; end; |
#6
|
|||
|
|||
)
ех, ничево в коде нипонял а можна как-то попроще написать код? например где грид ето DbGrid1 а датасет - ето DataSet1. количество строк зарание не извесно. есть, например, 3 столбца (а, х, с) и вот третий столбец (с) нада просумировать и, например, в едит закинуть результат.
|
#7
|
||||
|
||||
что-то такое:
Код:
while not dbgrid1.dataset.eof do begin s:=dbgrid1.dataset.fieldbyname('name').asstring; showmessage(s); dbgrid1.dataset.next; end; Последний раз редактировалось Admin, Сегодня в 10:32. |