![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте! У меня есть база данных (Table) содержащая различные электродвигатели. При вводе в Edit значения мощности двигателя, мне необходимо что бы программа выбрала из БД двигатель мощностью равной или большей чем введенный в Edit, и занесла все значения выбранного двигателя в StringGrid. Заранее спасибо!
|
#2
|
||||
|
||||
![]() Лучше и правильнее работать не с таблицей, а с запросом к таблице. Тогда делаешь простенький запрос:
Код:
Query1.SQL.Text := 'select * from ElectricMotor where Power >= ' + Edit1.Text; Query1.Open; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Ну, не факт.
Человек может уже отфильтровал выборку и теперь хочет "поиграться" с результатами. тогда использование события OnFilterrecord удобнее. |
#4
|
|||
|
|||
![]() Я в программировании новичок. Вы не могли бы поподробнее описать код выборки. И ещё, БД у меня сделана в Table, а не в Query. Заранее спасибо!
|
#5
|
||||
|
||||
![]() Ну если делать так как говорит Imikle то примерно так:
Код:
if Table1.Filter = '' then Table1.Filter := 'Power >= ' + Edit1.Text else Table1.Filter := Table1.Filter + ' and Power >= ' + Edit1.Text; Table1.Filtered := True; Но если очень хочется именно через TStringGrid то так: Код:
StringGrid1.RowCount := Table1.RecordCount + 1; StringGrid1.ColCount := Table1.Fields.Count; for Col := 0 to StringGrid1.ColCount - 1 do StringGrid1.Cells[Col,0] := Table1.Fields[Col].FieldName; for Row := 1 to StringGrid1.RowCount - 1 do begin for Col := 0 to StringGrid1.ColCount - 1 do StringGrid1.Cells[Col,Row] := Table1.Fields[Col].asString; Table1.Next; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 25.01.2011 в 09:55. |
#6
|
|||
|
|||
![]() В моем варианте это не код выборки а просто условие отбора записей. На паскале.
|
#7
|
|||
|
|||
![]() Будьте добры, подскажите, где в моём коде ошибка при занесении выбранного движка в StringGrid. Заранее благодарю!
Код:
procedure TForm1.Button1Click(Sender: TObject); var Pnom:Real; begin Pnom:=StrToFloat(Edit3.Text); if Table1.Filter = '' then Table1.Filter := 'Pnom >= ' + Edit3.Text else Table1.Filter := Table1.Filter + ' and Pnom >= ' + Edit3.Text; Table1.Filtered := True; end; var Pnom:Real; i,j:integer; begin for i:=0 to 8 do for j:=1 to 100 do StringGrid1.Cells[i,j]:=''; Table1.First; j:=1; for i:=1 to Table1.RecordCount do begin Pnom:=0; if Pnom then begin StringGrid1.Cells[0,j]:=Table1.FieldValues['Tiporazmer']; StringGrid1.Cells[1,j]:=Table1.FieldValues['Pnom']; StringGrid1.Cells[2,j]:=FloatToStrF(Table1.FieldValues['Inom'],ffFixed,4,1); StringGrid1.Cells[3,j]:=FloatToStrF(Table1.FieldValues['KPD'],ffFixed,5,1); StringGrid1.Cells[4,j]:=FloatToStrF(Table1.FieldValues['cos f'],ffFixed,4,1); StringGrid1.Cells[5,j]:=FloatToStrF(Table1.FieldValues['Ip/In'],ffFixed,4,1); StringGrid1.Cells[6,j]:=FloatToStrF(Table1.FieldValues['Mp/Mn'],ffFixed,4,1); StringGrid1.Cells[7,j]:=FloatToStrF(Table1.FieldValues['Mmax/Mn'],ffFixed,4,1); StringGrid1.Cells[8,j]:=FloatToStrF(Table1.FieldValues['N'],ffFixed,4,1); j:=j+1; end; {if} Table1.Next; end; end; end. Последний раз редактировалось Admin, 25.01.2011 в 10:07. |