如何获取datagrid中光标所在位置的记录中没有的项目?

angelfish99 2008-05-14 08:50:41
比如datagrid中当前光标所在记录中只有名字,年龄,但我想输出到textbox中的除名字,年龄,还有职业等信息(当然这些信息在database的记录中存在)
...全文
51 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelfish99 2008-05-15
  • 打赏
  • 举报
回复
我已经做好了,谢谢大家。真的很高兴。
angelfish99 2008-05-15
  • 打赏
  • 举报
回复
power401102
你好,谢谢你的提议。
你的提议非常好,但是我是一个新手,我不知道具体该怎样把这些代码写下了。
比如当前光标所在记录怎样获取(唯一性项目已经有了reno),
用什么命令写等,

你能用给我看看具体的代码例子吗?
power401102 2008-05-14
  • 打赏
  • 举报
回复
获取当前光标所在记录的(具有唯一性)关键信息,然后从数据库中读取所有信息并显示。
angelfish99 2008-05-14
  • 打赏
  • 举报
回复
lcsfxs 真的非常感谢。

"Frmbusinessmanedit.modify = True
Frmbusinessmanedit.oribusinessmanid = Adodc1.Recordset.Fields(0)"左边的没有怎么看懂,因为我是新手,不好意思。可以的话清看看我的详细要求与代码好吗?


我现在在一个form1里放作为检索条件的三个textbox key,然后有datagrid,还有三个commandbutton,command1是检索,command2是把datagid里的所有纪录向excel里输出,command3是把datagrid当前光标所指纪录向另外一个form2里textbox里逐一输出,command4是终了。


最初执行时,form1里什么都不显示,command1是检索了以后根据三个textbox key里的条件显示在datagrid里。
点了command2之后把现在检索显示出来的记录(包括没有的项目)都输出到excel
点了command3之后把现在检索出来的当前光标所在纪录(包括没有的项目)输出到form2里的文本框里作修改。

现在的关键问题是要求在datagrid里显示的不是记录的全部项目,但输出到excel和form2的text去的是纪录的全部项目。

Private Sub Form1_Load()
Private cnn As ADODB.Connection
Private mRs As ADODB.Recordset
Dim strSQL As String

' 把cnn设为adodb的连接
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=kikuchi;Persist Security Info=True;User ID=kikuchi;Data Source=SCAW"
cnn.Open

'把mRs作为Recordset
Set mRs = New ADODB.Recordset

'选中两个表md1,mdb中条件一致(where m.sort=b.sort)的全部记录11个项目
strSQL = "select m.reno, m.siname, m.position,m.ksname,m.post,m.address,m.tel, m.fax,m.mobile,m.email,b.stname from md1 m,mdb b where m.sort=b.sort "
mRs.CursorLocation = adUseClient
mRs.Open strSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText
End Sub


以下是根据三个检索条件设置 Command1,但显示在dagagrid里的只有5个项目
private Sub Command1_Click()
Dim strSQL As String
Dim nm As String
Dim ksm As String
Dim sbt As String
nm = Text1.Text
ksm = Text2.Text
sbt = Combo1.Text


If Len(nm) >= 6 Or Len(ksm) >= 20 Then
MsgBox "输入错误"

ElseIf Len(nm) = 0 And Len(ksm) = 0 And Len(sbt) = 0 Then
strSQL = "select m.siname, m.ksname, m.address,m.tel,b.stname from md1 m,mdb b where m.sort=b.sort"

'检索处理
Else
strSQL = "select m.siname, m.ksname, m.address,m.tel,b.stname from md1 m,mdb b where m.sort=b.sort and m.siname like'" & "%" & nm & "%" & "'" & "and m.ksname like'" & ksm & "%" & "'" & "and b.stname like'" & "%" & sbt & "%" & "'"
End If


先把在form1里打开的纪录关闭,要不然没法进行
mRs.Close
mRs.CursorLocation = adUseClient

再把在要在datagrid1里打开的纪录打开
mRs.Open strSQL, cnn, adOpenDynamic, adLockReadOnly, adCmdText

把在这里打开的纪录放入datagrid
Set Me.DataGrid1.DataSource = mRs


excel输出处理
Private Sub Command2_Click()

Dim objx1 As Object
Dim objbook As Object

Set objx1 = CreateObject("excel.application")
Set objbook = objx1.workbooks.Add
objx1.Visible = true

With objbook
.worksheets(1).cells(1, 1).copyfromrecordset mRs
.saveas
End With

objbook.Close
objx1.quit
Set objbook = Nothing
Set objx1 = Nothing
End Sub


Set Me.DataGrid1.DataSource = mRs

Form2.Show
If mRs.EOF Then Exit Sub
Form2.Text1.Text = mRs(0))
Form2.Text2.Text = mRs(1)
Form2.Text3.Text = mRs(2)
Form2.Text4.Text = mRs(3)
Form2.Text5.Text = mRs(4)
Form2.Text6.Text = mRs(5)
Form2.Text7.Text = mRs(6)
Form2.Text8.Text = mRs(7)
Form2.Text9.Text = mRs(8)
Form2.Text10.Text = mRs(9)
Form2.Text11.Text = mRs(10)

End Sub


这样执行的结果就是datagrid里没有的项目就没法输出到excel和form2的文本框里

请问我应该在哪里作修改?
谢谢。
lcsfxs 2008-05-14
  • 打赏
  • 举报
回复
用ADODC连接数据库,如

Private Sub Form_Load()
'连接字符串
Adodc1.ConnectionString = "driver={sql server};server=" + Trim(server) + ";uid=" + Trim(user) + ";pwd=" + Trim(password) + ";database=erp1"
'查询users表中全部信息
Adodc1.RecordSource = "select * from businessman"
'用datagrid显示查询信息
Set DataGrid1.DataSource = Adodc1
'刷新窗口信息
refresh_businessman
End Sub


Private Sub lblmodify_Click()
Frmbusinessmanedit.modify = True
Frmbusinessmanedit.oribusinessmanid = Adodc1.Recordset.Fields(0)
'把待修改信息添加到编辑窗口
Frmbusinessmanedit.txtbusinessmanid = Trim(Adodc1.Recordset.Fields(0))
Frmbusinessmanedit.Txtbusinessmanname = Trim(Adodc1.Recordset.Fields(1))
Frmbusinessmanedit.Txtcountry = Trim(Adodc1.Recordset.Fields(2))
Frmbusinessmanedit.Txtprovince = Trim(Adodc1.Recordset.Fields(3))
Frmbusinessmanedit.Txtcity = Trim(Adodc1.Recordset.Fields(4))
Frmbusinessmanedit.Txtaddress = Trim(Adodc1.Recordset.Fields(5))
Frmbusinessmanedit.Txtlinkman = Trim(Adodc1.Recordset.Fields(6))
Frmbusinessmanedit.Txttelephone = Trim(Adodc1.Recordset.Fields(7))
Frmbusinessmanedit.Txtfax = Trim(Adodc1.Recordset.Fields(8))
Frmbusinessmanedit.txtbusinessmanid.Enabled = False
Frmbusinessmanedit.Caption = "修改供应商信息"
Frmbusinessmanedit.Show 1
refresh_businessman
End Sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧