需要把数据库中下列sql查询出来的内容动态添加入combobox,应该怎么写呢?请尽量给出语句写法,本人菜鸟一名,谢谢!select proj_name from in_dbamn.project where proj_del='N' and proj_id <> 0 order by proj_name
参考: ssql = "select proj_name from in_dbamn.project where proj_del='N' and proj_id <> 0 order by proj_name" Set rc = server.CreateObject("adodb.recordset") rc.Open ssql, conn, 1, 1 rc.movefirst If rc.RecordCount <> 0 Then While Not rc.EOF ComboBox.AddItem rc.fields("proj_name") rc.movenext Loop End If
恩谢谢你的帮助,我把你的东西和我的数据库信息结合起来写为下面这段内容,但是运行报错,麻烦请帮我看看什么问题,因为它报错如附图。 另外我把你这句话给注释掉了,我怕和我之前的话重复,不知道是否正确,不过我试验后发现加上这句话也会报另外个错误。Private Sub UserForm_Initialize()
Dim cnOra As New ADODB.Connection Dim rsOra As New ADODB.Recordset Dim db_name As String Dim UserName As String Dim Password As StringSet cnOra = New ADODB.Connection Set rsOra = New ADODB.Recordsetdb_name = "iga4dtsi" UserName = "eopeo" Password = "eopeo"'打开连接 cnOra.Open "DSN=" + db_name + ";UID=" + UserName + ";PWD=" & Password + ";"
ssql = "select proj_name from in_dbamn.project where proj_del='N' and proj_id <> 0 order by proj_name" 'Set rsOra = server.CreateObject("adodb.recordset") rsOra.Open ssql, cnOra, 1, 1 rsOra.MoveFirst If rsOra.RecordCount <> 0 Then Do While Not rsOra.EOF ComboBox1.AddItem rsOra.Fields("proj_name") rsOra.MoveNext Loop End If End Sub
Dim cn As ADODB.Connection Dim RS As ADODB.Recordset
Set cn = New ADODB.Connection Set RS = New ADODB.Recordset
Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=E:\111.xls"
Dim sSql As String sSql = "Select proj_name from [Sheet1$]"
RS.Open sSql, cn, 1, 3
RS.MoveFirst If RS.RecordCount <> 0 Then While Not RS.EOF ComboBox1.AddItem RS.Fields("proj_name") RS.MoveNext Wend End If RS.Close: cn.Close Set RS = Nothing: Set cn = Nothing 我没有用你的代码,随便写了一个,能用,并且正确,数据库用的Excel,e:\111.xls,没有用户名和口令,就在sheet1的第一列写了如下内容: proj_name aaa bbb sss dd eee rer你参考上改吧。
combobox.AddItem proj_name的内容
Set rc = server.CreateObject("adodb.recordset")
rc.Open ssql, conn, 1, 1
rc.movefirst
If rc.RecordCount <> 0 Then
While Not rc.EOF
ComboBox.AddItem rc.fields("proj_name")
rc.movenext
Loop
End If
恩谢谢你的帮助,我把你的东西和我的数据库信息结合起来写为下面这段内容,但是运行报错,麻烦请帮我看看什么问题,因为它报错如附图。
另外我把你这句话给注释掉了,我怕和我之前的话重复,不知道是否正确,不过我试验后发现加上这句话也会报另外个错误。Private Sub UserForm_Initialize()
Dim cnOra As New ADODB.Connection
Dim rsOra As New ADODB.Recordset
Dim db_name As String
Dim UserName As String
Dim Password As StringSet cnOra = New ADODB.Connection
Set rsOra = New ADODB.Recordsetdb_name = "iga4dtsi"
UserName = "eopeo"
Password = "eopeo"'打开连接
cnOra.Open "DSN=" + db_name + ";UID=" + UserName + ";PWD=" & Password + ";"
ssql = "select proj_name from in_dbamn.project where proj_del='N' and proj_id <> 0 order by proj_name"
'Set rsOra = server.CreateObject("adodb.recordset")
rsOra.Open ssql, cnOra, 1, 1
rsOra.MoveFirst
If rsOra.RecordCount <> 0 Then
Do While Not rsOra.EOF
ComboBox1.AddItem rsOra.Fields("proj_name")
rsOra.MoveNext
Loop
End If
End Sub
哦,数据库倒是无所谓的,你可以把那句话换成任意的你的数据库里面的sql语句,只要能成功查询出来,肯定通的。真的麻烦你啦~
Dim cn As ADODB.Connection
Dim RS As ADODB.Recordset
Set cn = New ADODB.Connection
Set RS = New ADODB.Recordset
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=E:\111.xls"
Dim sSql As String
sSql = "Select proj_name from [Sheet1$]"
RS.Open sSql, cn, 1, 3
RS.MoveFirst
If RS.RecordCount <> 0 Then
While Not RS.EOF
ComboBox1.AddItem RS.Fields("proj_name")
RS.MoveNext
Wend
End If RS.Close: cn.Close
Set RS = Nothing: Set cn = Nothing
我没有用你的代码,随便写了一个,能用,并且正确,数据库用的Excel,e:\111.xls,没有用户名和口令,就在sheet1的第一列写了如下内容:
proj_name
aaa
bbb
sss
dd
eee
rer你参考上改吧。
报错:
adOpenKeyset 1 启动一个关键集类型的游标。
adOpenDynamic 2 启动一个动态游标。
adOpenStatic 3 启动一个静态游标网上查了下,不知道为何1 不行
指示在 Recordset 对象中使用的游标类型。设置和返回值设置或返回以下某个 CursorTypeEnum 值。常量 说明
AdOpenForwardOnly 仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。
AdOpenKeyset 键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。
AdOpenDynamic 动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。
AdOpenStatic 静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。
说明使用 CursorType 属性可指定打开 Recordset 对象时应该使用的游标类型。Recordset 关闭时 CursorType 属性为读/写,而 Recordset 打开时该属性为只读。如果将 CursorLocation 属性设置为 adUseClient 则只支持 adUseStatic 的设置。如果设置了不支持的值,不会导致错误,将使用最接近支持的 CursorType。如果提供者不支持所请求的游标类型,提供者可能会返回其他游标类型。打开 Recordset 对象时,将更改 CursorType 属性使之与实际使用的游标匹配。要验证返回游标的指定功能,请使用 Supports 方法。关闭 Recordset 后,CursorType 属性将恢复为最初的设置。下表说明每个游标类型所需的提供者功能(由 Supports 方法常量标识)。 对于该 CursorType 的某Recordset 对于所有这些常量, Supports 方法必须返回 True
AdOpenForwardOnly 无
AdOpenKeyset AdBook、adHoldRecords、adMovePrevious、adResync
AdOpenDynamic adMovePrevious
AdOpenStatic adBook, adHoldRecords, adMovePrevious, adResync
注意 尽管对于动态游标和仅向前游标 Supports(adUpdateBatch) 可能是真,但对于批处理更新应使用键集游标或静态游标。请将 LockType 属性设置为 adLockBatchOptimistic,然后将 CursorLocation 属性设置为 adUseClient 以启用批更新需要的 OLE DB 游标服务。远程数据服务用法 当用于客户端 (ADOR) Recordset 对象时,只能将 CursorType 属性设置为 adOpenStatic。