如何取出dbgrideh选中的行的数据? ( 积分: 20 )

  • 主题发起人 主题发起人 zgjob
  • 开始时间 开始时间
Z

zgjob

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure&nbsp;&nbsp;&nbsp;TForm1.Button1Click(Sender:&nbsp;&nbsp;&nbsp;TObject);&nbsp;<br>var&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;i:&nbsp;&nbsp;&nbsp;Integer;&nbsp;<br>begin&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;&nbsp;&nbsp;ClientDataSet1&nbsp;&nbsp;&nbsp;do&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Close;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fields.Clear;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FieldDefs.Clear;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommandText&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;SQLStr1;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FieldDefs.Update;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;&nbsp;&nbsp;TFieldDef(FieldDefs.Insert(0))&nbsp;&nbsp;&nbsp;do&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;'FIELD_NAME';&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataType&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;ftBoolean;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisplayName&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;'FIELD_NAME';&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;&nbsp;&nbsp;i&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;FieldDefs.Count&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;do&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FieldDefs.CreateField(ClientDataSet1);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fields[0].FieldKind&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;fkInternalCalc;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;&nbsp;<br>end;&nbsp;<br><br>procedure&nbsp;&nbsp;&nbsp;TForm1.ClientDataSet1CalcFields(DataSet:&nbsp;&nbsp;&nbsp;TDataSet);&nbsp;<br>begin&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;&nbsp;&nbsp;ClientDataSet1&nbsp;&nbsp;&nbsp;do&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;&nbsp;Fields[0].Value&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;Null&nbsp;&nbsp;&nbsp;then&nbsp;&nbsp;&nbsp;Fields[0].AsBoolean&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;False;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;&nbsp;<br>end;&nbsp;<br>用上面的代码,创建了一个临时的选择列,但如何取出当前dbgrideh已选中的列的第二列的数据?
 
采用书签处理.
 
...<br>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;Grdlst.SelectedRows.Count&gt;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;I:=&nbsp;0&nbsp;to&nbsp;Grdlst.SelectedRows.Count-1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[red]dsGrdlst.DataSet.GotoBookmark(pointer(Grdlst.SelectedRows));[/red]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CurEmp_Id:=Grdlst.DataSource.DataSet.FieldByName('Emp_Id').AsString;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CurCard_Date:=Grdlst.DataSource.DataSet.FieldByName('Card_Date').AsString;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteSQL:=pubDeleteSQL+CurEmp_Id+'&nbsp;AND&nbsp;Card_Date='+#39+CurCard_Date+#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteSQLList.Append(DeleteSQL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//排班数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteSQL:=pubDeleteSQL2+CurEmp_Id+'&nbsp;AND&nbsp;Team_Date='+#39+CurCard_Date+#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteSQLList.Append(DeleteSQL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;Else<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CurEmp_Id:=Grdlst.DataSource.DataSet.FieldByName('Emp_Id').AsString;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CurCard_Date:=Grdlst.DataSource.DataSet.FieldByName('Card_Date').AsString;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteSQL:=pubDeleteSQL+CurEmp_Id+'&nbsp;AND&nbsp;Card_Date='+#39+CurCard_Date+#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteSQLList.Append(DeleteSQL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//排班数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteSQL:=pubDeleteSQL2+CurEmp_Id+'&nbsp;AND&nbsp;Team_Date='+#39+CurCard_Date+#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteSQLList.Append(DeleteSQL);<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;Grdlst.DataSource.DataSet.EnableControls;<br>...
 
dsGrdlst为:TDataSource<br>Grdlst为当前dbgrideh
 
当然,Grdlst与dsGrdlst是互联的,给分吧!别忘了!![^][^]
 
后退
顶部