Private Sub Command5_Click()
''''''新建班级''''''''''''''''''''''
If iso = False Then
iso = True
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\Documents and Settings\Administrator\My Documents\xsgl\stu.mdb"
cn.open
End If ◆①毛病出在此↓
rs.open "insert into 班级(专业,年级,班级,人数) values( combo1(0).text ,combo1(1).text,combo1(2).text,combo1(3).text) ", cn, adOpenStatic, adLockOptimistic
end sub
问:①提示定界符有问题
②rs.open的最后的两个参数是什么意思?
③动态的插入了数据以后,我想显示出全部的记录,该怎么做?
是不是直接
rs.open "select * from 班级",vn,adOpenStatic,adLockOptimistic
set datagrid1.datasource=rs
就可以了?
''''''新建班级''''''''''''''''''''''
If iso = False Then
iso = True
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\Documents and Settings\Administrator\My Documents\xsgl\stu.mdb"
cn.open
End If ◆①毛病出在此↓
rs.open "insert into 班级(专业,年级,班级,人数) values( combo1(0).text ,combo1(1).text,combo1(2).text,combo1(3).text) ", cn, adOpenStatic, adLockOptimistic
end sub
问:①提示定界符有问题
②rs.open的最后的两个参数是什么意思?
③动态的插入了数据以后,我想显示出全部的记录,该怎么做?
是不是直接
rs.open "select * from 班级",vn,adOpenStatic,adLockOptimistic
set datagrid1.datasource=rs
就可以了?
解决方案 »
- 关于VB接受DSP数据的问题
- 像素到底是什么意思?看到"鼠标移动**像素",貌似是距离的意思;但"手机**像素"又类似是图片清晰度 质量 精度
- 大连发展机会(诚招vb/vb.net/java技术部长,vb,vb.net,java程序员),欢迎应届毕业生,学校学历外语年龄工作经验不限
- 新手问一个简单的select关于like的简单语句
- 求解立方根
- 天热, 散散分, 听说蒸发可以带走热量, 所以我猜发散分贴也可以凉快些!!!!!!!!!!!!!!!!!!!!!!!
- 安装程序的问题
- 发送EMAIL的程序问题
- 求救!!!快点!!!!有分!!!!!
- 请大家帮忙推荐一本学写vb脚本的入门书籍
- vb与WORD交互问题
- 求《应用程序设计编制Visual Basic 6.0职业技能培训教材》电子件
rs.open "insert into 班级(专业,年级,班级,人数) values( '" & combo1(0).text & "' ,'" & combo1(1).text & "','" & combo1(2).text & "', " & combo1(3).text & ")" , cn, adOpenStatic, adLockOptimistic
常数 含义
adlockrecordonly 指定只读访问(默认值)
adlockbatchoptimistic 使用批量更新模式而不是默认的立即更新模式
adlockoptimistic 使用乐观锁(仅在更新过程中才锁定记录或页面)
adlockpessimistic 使用悲观锁(编辑或更新整个过程中均锁定记录或页面)
cursortype属性用到的常数
常数 含义
adopenforwardonly 提供单向移动游标和只读recordset(默认值)
adopendynamic 提供可滚动游标,可显示其他用户对recordset所做的改动(包括添加新记录)
adopenkeyset 提供可滚动游标,只隐藏其他用户所做的改动,类似于dynaset类型的dao.recordset
adopenstatic 提供一个位于recordset静态拷贝上的可滚动游标,类似于snapshot类型的dao.recordset,但多了可更新特性
--------------显示出全部的记录
Rs.CursorLocation = adUseClient
Rs.Open "select * from 班级", CN, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = Rs
Re:
最好不要用rs来执行insert\ delete等命令,它一般用来执行查询(select)的,可以改成:
cn.Execute "insert into 班级(专业,年级,班级,人数)" _
& " select '" & Combo1(0).Text & "','" & Combo1(1).Text & "','" & Combo1(2).Text & "'," & Combo1(3).Text _
, , adExecuteNoRecords
此处注意:因为人数是数字类型,故不需要加单引号,其他的字符类型需要加!②rs.open的最后的两个参数是什么意思?
Re:
CursorType 属性 指示在 Recordset 对象中使用的游标类型。设置和返回值设置或返回以下某个 CursorTypeEnum 值。常量 说明
AdOpenForwardOnly 仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。
AdOpenKeyset 键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。
AdOpenDynamic 动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。
AdOpenStatic 静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。 LockType 属性
指示编辑过程中对记录使用的锁定类型。设置和返回值设置或返回以下某个 LockTypeEnum 的值。常量 说明
adLockReadOnly 默认值,只读。无法更改数据。
adLockPessimistic 保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。
adLockOptimistic 开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用 Update 方法时锁定记录。
adLockBatchOptimistic 开放式批更新。用于与立即更新模式相反的批更新模式。 ③动态的插入了数据以后,我想显示出全部的记录,该怎么做?
是不是直接
rs.open "select * from 班级",vn,adOpenStatic,adLockOptimistic
set datagrid1.datasource=rs
就可以了?
Re:是的,但是需要设置cn.CursorLocation = adUseClient
才能用set datagrid1.datasource=rs
1. cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\Documents and Settings\Administrator\My Documents\xsgl\stu.mdb"
此句中的provider不选择3.51可以么?这是什么意思?
2.
在我插入了记录以后,如果直接显示,将会显示为空,可是我如果先close,再open就可以了,为什么?
3.
定义中的
dim cn as new connection 和 dim cn as new odbc.connection 有什么区别?
我用的就是前一种,可是结果也是完全正确啊,这是为何?
此句中的provider不选择3.51可以么?这是什么意思? 数据库引擎的版本号。3.51 对应与 Access 97。2.
在我插入了记录以后,如果直接显示,将会显示为空,可是我如果先close,再open就可以了,为什么?
加上一句:
rs.Requery3.
定义中的
dim cn as new connection 和 dim cn as new odbc.connection 有什么区别?
我用的就是前一种,可是结果也是完全正确啊,这是为何? dim cn as new connection 选择缺省的数据库引擎连接对象,一般等于dim cn as new ADODB.connection ;dim cn as new odbc.connection 则指定使用 ODBC 引擎的连接对象。
1.要将一个数据库表中的记录的三个属性加入到三个combo中,该怎么做?是用普通的combo还是用那个datacombo?
该怎么加入呢?
2.怎么样才可以只显示符合条件的某条记录?比如说是第一条,或者是下一条,或者是前三条,或者是全部?/
3.怎么样可以判断一下如果我这个表中有的记录就不再加入新的了?然后给用户一个提示?
1.要将一个数据库表中的记录的三个属性加入到三个combo中,该怎么做?是用普通的combo还是用那个datacombo?
!!!没用过datacombo,不过这个好像也只为加强了与adodc控件配合使用吧?我一般用combo!顺便问一下,哪种类型的combo的Item能有tag属性,呵,可以保存主键啊!
该怎么加入呢?
2.怎么样才可以只显示符合条件的某条记录?比如说是第一条,或者是下一条,或者是前三条,或者是全部?/
!!!用游标!不过我想一般上一条,下一条够用了.
3.怎么样可以判断一下如果我这个表中有的记录就不再加入新的了?然后给用户一个提示?
!!!sql="select * from tablename where name='xxx'"
rst.open sql ....
if rst.eof=false then
msgbox "已经存在!"
else
sqlstring="insert..."
cnn.execute sqlstring
end if
Dim cn As New ADODB.Connection
Dim rs As New ADODB.RecordsetPrivate Sub Combo1_Click()
rs.Open "SELECT * FROM TABLENAME WHERE NAME = '" & txtName.Text & "'", cn, adOpenDynamic, adLockOptimistic
While Not rs.EOF Then
Combo1.AddItem trim(rs!name)
rs.MoveNext
Wend
End SubPrivate Sub Form_Load()
cn.ConnectionString = "DSN=SCM_ACCESS;pwd=;uid="
cn.Open
'查询字符串可以上这里查
'http://www.connectionstrings.com/
End Sub
插入记录代码如下:
Private Sub xinjj_Click()
①inzhy$ = InputBox("请输入想新建的专业的名称:", "新建专业")
②If iso = flase Then
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\Documents and Settings\Administrator\My Documents\xsgl\stu.mdb"
cn.open
iso = True
Else
rs.Close
End If
If Len(inzhy) = 0 Then
MsgBox "专业不能为空", vbCritical + vbOKOnly, "添加专业出错"
Else
cn.Execute "insert into 专业 values ( '" & inzhy & "' )"
cn.CursorLocation = adUseClient
rs.open "select * from 专业", cn, adOpenStatic, adLockOptimistic
Set DataGrid1.DataSource = rs
End If
End Sub
问:1.
我的inputbox中如果输入英文,很好,可是一输入中文,在对话框中就成了乱码,但是保存在数据库中,倒是完好的.这是为何/
2.
大家都看的出我用一个iso标志了数据库是否被打开,原因是我如果不判断数据库是否打开,也就是如果数据库如果打开了我再用rs.open,就会提示:在数据库打开时,该操作不可用.这是为什么?
难道就非要加上rs.close么?
3.
第一次我新建数据库时,完全正确,但是如果在此基础上,再新建一个时,在datagrid显示时,提示,此行不可用.点确定以后,数据却被完好的+入了.为何?
4.
我的inputbox中如果输入英文,很好,可是一输入中文,在对话框中就成了乱码,但是保存在数据库中,倒是完好的.这是为何/
没懂.在inputbox还是在哪?我的机器上inputbox正常!
2.
大家都看的出我用一个iso标志了数据库是否被打开,原因是我如果不判断数据库是否打开,也就是如果数据库如果打开了我再用rs.open,就会提示:在数据库打开时,该操作不可用.这是为什么?
难道就非要加上rs.close么?
判断cn自已就有标志.cn.state=value
adStateClosed 默认,指示对象是关闭的。
adStateOpen 指示对象是打开的。
adStateConnecting 指示 Recordset 对象正在连接。
adStateExecuting 指示 Recordset 对象正在执行命令。
adStateFetching 指示 Recordset 对象的行正在被读取
更改你的代码:
if cn.state=adstateclose then '如果是关闭的才打开.
cn.open
endif
rst.open ....,cn.....
3.
第一次我新建数据库时,完全正确,但是如果在此基础上,再新建一个时,在datagrid显示时,提示,此行不可用.点确定以后,数据却被完好的+入了.为何?
这个俺是不会了,俺从不用这个控件!