VB中,数据库DataGrid1.stretchcolumnss(0).Caption = "演出编号"下标越界什么问题?

求助 datagrid控件 Columns(2) 下标越界问题!!!_百度知道
求助 datagrid控件 Columns(2) 下标越界问题!!!
Text = dgUser.Columns(2)Private Sub dgUser_RowColChange(LastRow As Variant,整个工程里均有这个问题,实时错误 9.Text = dgU&gt,还是这个问题.,请大家帮帮忙.Columns(1).Columns(0), ByVal LastCol As Integer)If result &lt,我已经把Columns默认的2项改成三项了,谢谢了.Text(就是这段; 0 Then
txtUser.Text = dgUser..Text
cboUser,调试的时候显示下标越界..Text
txtPassword
难道RowColChange里什么错误了!?请教,就是会自动跳掉,整个工程里都有这个问题,数据库的添加都正常!.实际运行中.Text选中时就无法显示了.Columns(2)...Text = dgUser,也能运行..如果把cboUser!.Text 删掉,也可以显示,但界面中对应的cboUser.,显示,可以正常显示
我有更好的答案
肯定是找不到列了.数据库中至少要3列数据
其他类似问题
为您推荐:
下标越界的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁VB6.0操作SQL Server——增删改查 - Alfa - 博客园
随笔 - 273, 文章 - 1, 评论 - 19, 引用 - 0
一、数据录入
通过VB向SQL Server数据库中录入数据,可以使用数据绑定控件录入数据与使用SQL语句录入
1.利用数据绑定控件录入数据
使用数据绑定控件录入数据可以运行较少的代码,实现向数据库中录入数据,数据绑定后,由于数据绑定控件已经与数据表相连接,所以只需通过ADO控件的AddNew方法添加一条新的空白记录,再通过Update方法保存当前的记录,即可完成向数据库中录入数据。
例:向数据库中添加一条记录
Private Sub cmdAdd_click()
&&&&&&Adodc1.Recordset.AddNew
Private Sub cmdSave_click()
&&&&&Dim I as Long
&&&&&for I =0 to 6
&&&&&&&&&&Adodc.Recordset.Fields(i).value=Text(i+1).text
&&&&&Next I
&&&&&Adodc1.Recoedset.Update
&&&&&MsgBox"添加信息成功!"
2.使用Insert语句录入数据
&& 使用SQL语句录入数据,通过connection对象的execute方法执行SQL语句,语法如下:
&&& connection.execute 字符串,记录数,字符串参数
例:向student数据库中添加一条学生信息
Dim cnn as ADODB.conection
Dim rst as ADODB.recordset
Private sub Form_Load()
&&&&set cnn=New ADODB.connection
&&&&set rst=new ADODB.recordset
&&&&cnn.open"provider=SQLOLEDB;Persist security Info=TUser ID=Initial Catalog=Data Source=."
&&&&rst.open"select * from student_info",cnn
&&&&set MSHFlexGrid.DataSource=rst
Private sub cmdAdd_click()
&&&cnn.execute"insert into student_info(txtSID,txtName,txtStxtBornData,txtRuDate,txtClassNo)" & _
&&&&&&&&&&"value('" & txtSID & "','" & txtName & "','" & txtSex & "','" & txtBornDate & "','" & txtRuDate & "','" & txtClassNo & "')"
二、数据删除
通过VB删除数据时,不仅可以使用SQL语句中的Delete语句来实现,也可以使用ADO控件Delete方法来删除数据。
1.使用ADO控件Delete方法删除数据
使用ADO控件Delete方法删除数据时,被删除的数据信息表面上是被删除了,实质上数据还存在与内存中,这时还需要使用ADO控件的Update方法才能够将数据彻底地删除
例:删除表中的指定记录:
Adodc1.Recordset.Delete
Adodc1.Recordset.Update
例:通过ADO控件Delete方法删除表中指定的数据:
Private Sub Form_Load()
&&Adodc1.ConnectionString="Provider=SQLOLEDB;Persist Security Info=TUser ID=Initail Catalog=Data Source=."
&&mandtype=adCmdText
&&Adodc.Recordsource="select * from student_info"
&&Set DataGrid1.DataSource=Adodc1
Private Sub Command1_Click()
&&Adodc1.Recordset.Delete
&&If Msgbox("确认删除指定数据吗?",vbYesNo,"提示")=vbYes then
&&&&&Adodc1.Recordset.Refresh
2.执行Delete语句进行数据删除
使用Delete语句删除数据,不仅可以删除指定的一条或多条语句,也可以将数据表中的数据全部删除
例:在VB中执行Delete语句删除表student中的全部数据
Cnn.Execute"delete from student"
可以在Delete语句后使用where来限定条件,将条件符合的数据删除
例:删除表student中年龄大于25岁的数据
Cnn.Execute "delete from student where 年龄&'25'"
3.删除列中的数据
无论是通过ADO控件Delete方法还是delete语句删除数据,都是将一行或多行数据全部删除,如果表中一些行的数据需要保留某些列中的信息,那么使用ADO控件Delete方法或Delete语句都是比较麻烦的。
对于删除表中的数据,可以采取数据的方式实现,即将删除列中的数据直接更新为Null
例:通过ADO控件Update方法删除表中列的数据
Private Sub Command1_Click()
&&Adodc1.Recordset.Update 1,Nul
三、数据修改
在VB中修改数据,不仅仅可以采用执行SQL语句实现,也可以通过数据绑定控件进行数据的修改。数据绑定控件进行数据的修改采用的代码较少,特别是一些表格类数据绑定控件,不需要代码即可对数据进行修改,如DataGrid控件。
1.使用Update语句修改数据
Update语句通过ADO对象的Execute方法执行,达到对数据表中的数据进行修改
Cnn.Execute"Update 数据表名称 set 字段1=表达式1,字段2=表达式2&&where子句"
在Update语句中可以使用where子句,还有符合条件的数据可执行修改操作,如果使用where指定条件,则Update语句会修改表中的全部数据
通常都是在批量更改时采用该语句,这种方法要比ADO的Update方法逐条地修改数据方便,但VB中一些表格控件可以不需要代码而直观实现数据的批量修改
2.表格数据绑定控件修改数据
在VB中采用表格数据绑定修改控件修改数据,基本上不需要代码,只需要设置表格数据绑定控件的一些属性即可实现,例如DataGrid控件,将其绑定到相应的数据源上,再设置其AllowUpdate属性为True,即可实现表格中修改的数据及时更新到数据库中
该属性可返回或设置一个值,指示用户能否修改DataGrid控件中的数据,语法:
DataGrid.AllowUpdate=布尔表达式
例:使用DataGrid控件修改数据
Private Sub Form_Load()
&Adodc1.ConnectionString="Provider=SQLOLEDB;Persist Security Info=TUser ID=Initial Catalog=Data Source=."
mandType=adcmdText
Adodc1.RecordSource="select * from student_Info order by student_ID"
Set DataGrid1.DataSouce=Adodc1
DataGrid1.AllowUpdate=True
3.使用文本数据绑定控件修改数据
与DataGrid控件不同,文本类控件绑定数据后在修改数据时,由于所修改的数据只是写入在缓存当中,所以需要通过ADO的Update方法提交修改,另外,ADO还提供CancelUpdate方法,用此方法来撤销在使用Update方法前对数据所作的修改,在程序中使用CancelUpdate方法的代码如下:Adodc1.Recordset.CancelUpdate
例:使用文本控件绑定数据并进行修改数据
Private Sub Form_Load()
&Adodc1.ConnectiongString="Provider=SQLOLEDB;Persist Security Info=TUser ID=Initial Catalog=Data Source=."
Adodc1.RecordSource="select * from Course_Info"
Set Text1.DataSource=Adodc1
Text1.DataField="课程名称"
Private Sub Commad1_Click()
&Adodc1.Recordset.Update
&MsgBox"保存成功!",vbOKOnly,"提示"
Private Sub Command2_Click()
&Adodc1.Recordset.CancelUpdate
四、数据查询
VB中查询数据库中的数据不仅可以通过执行SQL语句实现,也可以通过控件或对(如ADO)限定检索数据的条件来实现。
1.简单查询
简单查询可以通过Select语句限定数据源来实现。在Select语句中使用关键字、子句等实现。
下面对几种常用的简单查询进行介绍:
1)使用AS改变查询数据的列名
多数情况下,在SQL Server中创建表的字段都是以英文命名的,这些字段名在显示时给一般用户带来不便,那么可以在查询中采用AS来改变字段在显示时的名称。
例:使用AS改变查询数据的列名
Private Sub cmdModify_Click()
&&&&&Adodc.RecordSource="select ID as 编号,Mailbox as 电子邮箱 from Mail_Info"
&&&&&Adodc.Refresh
2)计算查询的结果
VB编写的程序中,往往需要将数据库中的数据进行计算,以便获得所需的数值。
通过在查询语句中使用算术运算符,在配合AS为计算出的字段设置名称,即可在查询结果中显示计算得到的数据。
例:计算查询的结果
Private Sub cmdAcount_Click()
&&&&Adodc.RecordSource="select 卡号,每小时上机费用,上机时间(每小时上机费用*上机时间)as 收费金额 from 学生上机收费金额表"
&&&&Adodc.Refresh
3)比较条件查询
在查询语句中可以包含比较运算,常用的比较运算符有=、&、&、&&、!&、!&、&=、&=、!=。使用这些运算符连接表达式形成一个比较条件,系统将根绝该查询条件返回的布尔值来判断数据是否满足该查询条件,只有满足条件的数据才会出现在查询的结果集中。
这些比较条件在查询语句中需要与where子句连用,但是VB提供Filter属性为Recordset中的数据指定筛选条件。该属性根据条件可选择性地屏蔽Recordset对象中的记录,该属性语法如下:Recordset.Filter=字符串
例:通过Filter属性实现比较条件查询
Private Sub Form_Load()
&&&&&Adodc.connectionString="provider=SQLOLEDB;Data Source=.;Initail CataLog=UID=PWD=123456"
&&&&&Adodc.Recordset="select stuID as 学号,stuname as 姓名,stuage as 年龄 from student_info"
&&&&&set DataGrid.DataSource=Adodc
&&&&&Combo1.AddItem"学号"
&&&&&Combo1.AddItem"姓名"
&&&&&Combo1.AddItem"年龄"
&&&&&Combo2.AddItem"&"
&&&&&Combo2.AddItem"&"
&&&&&Combo2.AddItem"&="
&&&&&Combo2.AddItem"&="
&&&&&Combo2.AddItem"="
Private Sub cmdQuery_Click()
&&&&&&On Error Resume Next
&&&&&&If Combo1.text&&"" and Combo2.text&&"" then
&&&&&&&&&&&&&Adodc.Recordset.Filter=Adodc.Recordset.Fields(Combo1.ListIndex).Name & Combo2.Text & "" & Trim(txtQuery.text) & ""
&&&&&&End If
&&&&&&If Err then Msgbox"请输入正确信息!",vbOKOnly,"警告"
2.模糊查询
模糊查询是通过在VB中查询与所给查询内容相似的信息。
实现模糊查询可以通过执行SQL语句中的Like语句实现。Like语句用来确定给定的数据信息是否与指定的模式匹配。(模式可以包含常规字符和通配符字符。)Like也可以在ADO的Filter属性中使用。
下面介绍在Filter属性中使用Like与通配符的几种方法:
3.日期和时间查询
对日期和时间的数据查询,可以通过VB中的ADO的Filter属性限定筛选条件,或执行查询SQL语句实现。
1)查询指定日期时间的数据
在SQL语句中,可以使用运算符(&、=、&、Like等)查询日期/时间类型的数据。日期时间字符串的书写要符合一定的格式,例如& 0:00:01&。
例:查询指定日期时间的数据
Private Sub cmdQuery_Click()
&&&&&&&On Error Resume Next
&&&&&&&Adodc.Recordset.Filter="出生日期="
&&&&&&&If Err then Msgbox"请输入正确信息!",vbOKOnly,"错误"
Private Sub Form_Load()
&&&&&&&Adodc.ConnectonString="Provider=SQLOLEDB;Data Source=.;Initail Catalog=UID=PWD=123456"
&&&&&&&Adodc.RecordSource="select stuID as 学号,stuName as 姓名,stuAge as 年龄,stuBornDate as 出生日期 from Student_Info"
&&&&&&&set DataGrid.DataSource=Adodc
2)分别按年、月、日等查询数据
在设计数据库系统应用程序时,往往需要查询某一年、某个月或某一天的数据。如果采用指定日期时间的方式来查询,虽然可以实现,但是过程是很麻烦的。这时可以采用Year、Month、Day等函数,对数据库中日期时间数据提取年、月、日等相关信息;然后结合指定日期时间的查询方式,即可方便地查询到某一年、某个月或者某一天的数据。
例:按年、月、日等查询数据
Private Sub cmdQuery_Click()
&&&&Dim stc as string
&&&&On Error Resume Next
&&&&Select Case combo1.ListIndex
&&&&Case 0
&&&&&&&&&&stc="year"
&&&&Case 1
&&&&&&&&&&stc="month"
&&&&Case 2
&&&&&&&&&&stc="day"
&&&&End Select
&&&&Adodc.RecordSource="select stuID as 学号,stuName as 姓名,stuAge as 年龄,stuBornDate as 出生日期 from Student_Info where " & stc & "(stuBornDate)='" & txtQuery.Text & "'"
&&&&Adodc.Refresh
&&&&If Err then Msgbox"请输入正确信息!",vbOKOnly,"错误"\
Private Sub Form_Load()
&&&&&&&Adodc.ConnectonString="Provider=SQLOLEDB;Data Source=.;Initail Catalog=UID=PWD=123456"
&&&&&&&Adodc.RecordSource="select stuID as 学号,stuName as 姓名,stuAge as 年龄,stuBornDate as 出生日期 from Student_Info"
&&&&&&&set DataGrid.DataSource=Adodc
&&&&&&&combo1.AddItem"按年"
&&&&&&&combo1.AddItem"按月"
&&&&&&&combo1.AddItem"按日"vb中,双击DataGrid1中的某条数据,在另一个窗口显示该条数据_百度知道
提问者采纳
DataGrid1.Text&Form2.Columns(1);DataGrid1_Click()&nbsp.Text2;=&&nbsp.Value&nbsp.Text&&orDataGrid1.Columns(0);&&Sub&nbsp.Text1;&&Form2Private&=&nbsp
提问者评价
谢谢,按照你的方法已经完成!就是把click改成了dbclick!
其他类似问题
Private Sub Text7_Change()from2.text1,DataSource同DataGrid1你可以这样.text=text7,在From1加一个Text控件,假设名为Text7,DataField选姓名双击Text7控件代码如下
来自团队:
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁<meta name="keywords" content=""/>
<meta name="description" content=""/>
VB中实时错误‘9’,下标越界的解决办法 - 金刀客博客
VB中实时错误‘9’,下标越界的解决办法
作者:admin 日期:
&&&&&&当数据库的记录一个自动为空的时候,如果用DataGrid显示你的数据库记录就会出现“下标越界”的错误,因为当某个记录的某个字段为空,把值赋值给datagrid的时候,数组就会少1,从而出现上述错误。&&&&这个问题困扰了我很久,开始采用的是把每个记录的字段为空的话就手工用null填充,今天仔细想如果数据很大的话那不是累死人。&& 今天发现了一个超级聪明的办法,呵呵,就是在循环写入的时候在后面添加一个 & ""就可以搞定。比如: 程序代码&&For lCount = 1 To nPageSize objrs.AddNew objrs!id = rs_findbook!id & "" objrs!auther = rs_findbook!auther & "" objrs!Name = rs_findbook!Name & "" objrs!press = rs_findbook!press & "" objrs!Year = rs_findbook!Year & "" objrs!other = rs_findbook!other & "" rs_findbook.MoveNext Next如:这样即使rs_findbook!auther的值为null,也能保证数组大小不变,从而消除下标越界的错误
以下说明属本文之一部分:
转载请保持完整并注明:转自
[本日志由 admin 于
11:29 PM 编辑]
| 查看次数: -
游客发言不需要密码.
提示:单击自动获取验证码
最多可输入,当前共,还可输入
禁止表情转换
禁止自动转换链接
禁止自动转换关键字
虽然发表评论不用注册,但是为了保护您的发言权,建议您.在vb中 DataGrid1与数据库(不使用data ,adodc,DataEnvironment 等控件)如何动态连接库?_百度知道
在vb中 DataGrid1与数据库(不使用data ,adodc,DataEnvironment 等控件)如何动态连接库?
提问者采纳
spRoomSale&spRoomFullRate&quot.Caption = &
DataGrid1.Columns(3).CommandText = &mandText = &quot.Columns(1), adVarChar.AElse销售次数&quot.Open strCnnSet cmm = New ADODB;ThisYear&quot.Append cmm,以下给出一段代码.Columns(1).CreateParameter(&quot使用ADODB数据访问对象来完成.Caption = &mandType = adCmdStoredProcIf frmMain.Columns(0).Columns(2).Columns(2), eDate)End IfSet rs = New ADODB, sDate)
cmm.Caption = &quot, Text1, adParamInput.Caption = &quot, adDBTimeStamp.DataSource = rsSelect Case frmMain.iStatType = 2 Then
eDate = DTPicker2.Caption = &入住情况(人·天)&quot.CursorLocation = adUseClientrs.Caption = &quot, ;月份&销售金额&quot.Value
cmm.Columns(1);
DataGrid1.RecordsetspMonthSum&
DataGrid1.iStatType = 1 Thencmm, adParamInput.Caption = &StartDate&quot.Columns(3).Columns(0);
DataGrid1.P.Caption = &该类客房数&销售金额&quot.Open cmmDataGrid1, adParamInput.A
DataGrid1;
DataGrid1;EndDate&ElseIf frmMain.Connectioncnn, ;客房类型&quot, 4;.Columns(0), eDate As Date
sDate = DTPicker1.Text)Else
mandText = &quot.Caption = &quot.Width + 500
DataGrid1;
DataGrid1, adDBTimeS客房类型&mandSet cmm.Columns(2).ClearFieldsSet DataGrid1.PEnd SelectDataGrid1.iStatType
DataGrid1.ActiveConnection = cnn
DataGrid1.Parameters.CreateParameter(&quot.CreateParameter(&quot.Columns(2);类型编号&quot:Private Sub Command1_Click()Set cnn = New ADODB;
DataGrid1.Width = DataGrid1.Caption = &End IfIf frmMain.iStatType = 3 Then入住率(%)&
其他类似问题
为您推荐:
动态连接库的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 stretchcolumns 的文章

 

随机推荐