要弄清楚这两个问题,就要明白For循环语句的语法规则:
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的达拉特网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
For循环语句,首先是判断循环条件,如果循环条件不合理,则循环不执行。
那么看第一个语句,循环范围是 i = -3.5 to 5.5,显然这个是一个从-3.5到5.5的递增范围,可是后面的Step却是一个负数,表示以0.5的步长递减。取值范围要求从小到大,可是步长改变却是由大变小,显然这个循环条件自相矛盾,所以循环将不会执行,也就是循环执行的次数是0次!
如果循环条件合理,则开始执行循环语句,直到根据步长变换,下一个值超出循环范围则终止。
For j = 6 to 2 Step -2
Next
完整写法就是:
For j = 6 to 2 Step -2
Next j
Next j的意思就是下一个j值。结合本题,下一个j值等于6-2=4,这个时候,就是循环语句的第二个规则,判断循环变量的值是否超出循环范围,我们这里的j=4,显然是在6 to 2这个范围之内,所以循环继续,到下一个j的时候为2,依然在循环范围内;到这里,6,4,2我们的循环执行了3次,准备第4次循环的时候j = 2 -2 = 0超过了6 to 2这个范围,那么循环终止。
所以i循环内的每一个j循环将执行3次。
DT.Rows.ToString未必是指结果集中的所有数据,也许只是一行中所有的,或是一列中所有的
保险起见,可以一格格枚举
dim a as boolean=true
Dim row As DataRow
For Each row In DT.Rows
Dim column As DataColumn
For Each column In DT.Columns
if row(column).contains("Agree") then a=false
Next column
Next row
if a then
Me.rblAgReject.Items(0).Enabled = False
else
Me.rblAgReject.Items(0).Enabled = True
end if
VB.NET 2005,已经实现了continue语法,具体是这样操作:
如果 Continue 语句在 Do...Loop 循环中,请将该语句更改为 Continue Do。
如果 Continue 语句在 For...Next 循环中,请将该语句更改为 Continue For。
如果 Continue 语句在 While...End While 循环中,请将该语句更改为 Continue While。
否则,请移除 Continue 语句。
用法:
For i As Integer = 0 To 100
' If i = 50 跳过 Console.Writeline statement
If i = 50 Then Continue For
Console.WriteLine(i.ToString)
Next
' Do While using Continue statement.
Dim ii As Integer = 1
Do While ii 100
ii += 1
' If ii = 50 跳过 Console.Writeline statement
If ii = 50 Then Continue Do
Console.WriteLine(ii.ToString)
Loop
' While using Continue statement.
Dim iii As Integer = 1
While iii 100
iii += 1
' If iii = 50 跳过 Console.Writeline statement
If iii = 50 Then Continue While
Console.WriteLine(iii.ToString)
End While
Dim Cnn As New Data.OleDb.OleDbConnection
Dim DbAdapter As New Data.OleDb.OleDbDataAdapter
Dim Cmd As New Data.OleDb.OleDbCommand
Dim dsAll As New Data.DataSet
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\webapp\test\web.mdb"
Cmd.Connection = Cnn
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'插入
Cmd.CommandText = "insert into main (about) values ('" + TextBox1.Text + "')"
UpdateTable()
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
'修改
Dim ids As Integer
ids = 1
Cmd.CommandText = "update main set about='" + TextBox1.Text + "' where id=" + ids.ToString()
UpdateTable()
End Sub
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click
'删除
Dim ids As Integer
ids = 1
Cmd.CommandText = "delete from main where id=" + ids.ToString()
UpdateTable()
End Sub
Public Sub UpdateTable()
Dim Trans As Data.OleDb.OleDbTransaction
Try
Cnn.Open()
Trans = Cnn.BeginTransaction()
Try
Cmd.Transaction = Trans
Cmd.ExecuteNonQuery()
Trans.Commit()
Catch
Trans.Rollback()
Finally
If (Cnn.State = System.Data.ConnectionState.Open) Then
Cnn.Close()
End If
End Try
Catch
'error message
End Try
End Sub
Protected Sub Button4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button4.Click
'显示
Cmd.CommandText = "select id, about from main"
DbAdapter.SelectCommand = Cmd
DbAdapter.Fill(dsAll, "table1")
If (dsAll.Tables("table1").Rows.Count 0) Then
TextBox1.Text = dsAll.Tables("table1").Rows(0)("about")
Else
TextBox1.Text = ""
End If
End Sub
(一)类型转换类函数
1. CType(X)
[格式]:
P=CBool(X)
' 将X转换为"布尔"(Boolean)类型
P=CByte(X)
' 将X转换为"字节"(Byte)类型
P=CCur(X)
' 将X转换为"金额"(Currency)类型
P=CDate(X)
' 将X转换为"日期"(Date)类型
P=CDbl(X)
' 将X转换为"双精度"(Double)类型
P=CInt(X)
' 将X转换为"整型"(Integer)类型
P=CLng(X)
' 将X转换为"长整型"(Long)类型
P=CSng(X)
' 将X转换为"单精度"(Single)类型
P=CStr(X)
' 将X转换为"字符串"(String)类型
P=Cvar(X)
' 将X转换为"变体型"(Variant)类型
P=CVErr(X)
' 将X转换为Error值
[ 范例 ]:
(1). CStr(13)+CStr(23)
' 数值转换成字符串后,用"+"号连接, 结果:1323
(2). CInt("12")+12
' 字符串转换成整型后与12相加, 结果:24
(3). P=CInt(True)
' 输出结果为-1
' 布尔值与数值的转换时要注意,布尔值只有True和False,其中True在内存中为-1,False存为0
(4). CBool(-0.001)
' 输出结果为True
' 将数值转换为布尔型时,等于0的数值将得到False,不等于0的数值得到True.
2. Int(X),Fix(X):取X的整数值
[格式]:
P=Int(X) ' 取=X的最大整数值
P=Fix(X) ' 取X的整数部分,直接去掉小数
[范例]:
(1) Int(-54.6)
' 结果为-55,取=-54.6的最大整数
(2) Fix(54.6)
' 结果为54,取整数并直接去掉小数
(二)常用数学函数
[格式]:
1. Abs(N) 取绝对值
例:Abs(-3.5) 结果:3.5
2. Cos(N) 余弦函数
例:Cos(0) 结果:1
3. Exp(N) e为底的指数函数
例:Exp(3) 结果:20.068
4. Log(N) 以e为底的自然对数
例:Log(10) 结果:2.3
5. Rnd[(N) 产生随机数
例:Rnd 结果:0--1之间的数
6. Sin(N) 正弦函数
例:Sin(0) 结果:0
7. Sgn(N) 符号函数
' 说明:取正负号。Y=Sgn(X) 既 X0 则Y=1;X=0 则Y=0;X0 则Y= -1
8. Sqr(N) 平方根
例:Sqr(9) 结果:3
9. Tan(N) 正切函数
例:Tan(0) 结果:0
10.Atn(N) 反切函数
例:Atn(0) 结果:0
[注意]:在三角函数中,以弧度表示。
(一)字符串类函数:
1. ASC(X),Chr(X):转换字符字符码
[格式]:
P=Asc(X) 返回字符串X的第一个字符的字符码
P=Chr(X) 返回字符码等于X的字符
[范例]:
(1)P=Chr(65)
'输出字符A,因为A的ASCII码等于65
(2)P=Asc("A")
'输出65
2. Len(X):计算字符串X的长度
[格式]:
P=Len(X)
[说明]:
空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2 Bytes,但也算一个字符。
[范例]:
(1) 令X="" (空字符串)
Len(X) 输出结果为0
(2) 令X="abcd"
Len(X) 输出结果为4
(3) 令X="VB教程"
Len(X) 输出结果为4
3. Mid(X)函数:读取字符串X中间的字符
[格式]:
P=Mid(X,n)
由X的第n个字符读起,读取后面的所有字符。
P=Mid(X,n,m)
由X的第n个字符读起,读取后面的m个字符。
[范例]:
(1) X="abcdefg"
P=Mid(X,5)
结果为:P="efg"
(2) X="abcdefg"
P=Mid(X,2,4)
结果为P="bcde"
4. Replace: 将字符串中的某些特定字符串替换为其他字符串
[格式]:
P=Replace(X,S,R)
[说明]:将字符串X中的字符串S替换为字符串R,然后返回。
[范例]:
X="VB is very good"
P=Replace(X,good,nice)
输出结果为:P="VB is very nice"
5. StrReverse:反转字符串
[格式]:
P=StrReverse(X)
[说明]:
返回X参数反转后的字符串
[范例]:
(1)X="abc"
P=StrReverse(X)
输出结果:P="cba"
6. Ucase(X),Lcase(X):转换英文字母的大小写
[格式]:
P=Lcase(X)
'将X字符串中的大写字母转换成小写
P=Ucase(X)
'将X字符串中的小写字母转换成大写
[说明]:除了英文字母外,其他字符或中文字都不会受到影响。
[范例]:
(1) 令 X="VB and VC"
则Lcase(X)的结果为"vb and vc",Ucase(X)的结果为"VB AND VC"
7. InStr函数:寻找字符串
[格式]:
P=InStr(X,Y)
从X第一个字符起找出Y出现的位置
P=InStr(n,X,Y)
从X第n个字符起找出Y出现的位置
[说明]:
(1) 若在X中找到Y,则返回值是Y第一个字符出现在X中的位置。
(2) InStr(X,Y)相当于InStr(1,X,Y)。
(3) 若字符串长度,或X为空字符串,或在X中找不到Y,则都返回0。
(4) 若Y为空字符串,则返回0。
(二)日期时间类函数:
1. Year(X),Month(X),Day(X):取出年,月,日
[格式]:
P=Year(X)
取出X"年"部分的数值
P=Month(X)
取出X"月"部分的数值
P=Day(X)
取出X"日"部分的数值
[说明]:Year返回的是公元年,若X里只有时间,没有日期,则日期视为#1899/12/30#
2. Hour,Minute,Second函数:取出时,分,或秒
[格式]:
P=Hour(X)
取出X"时"部分的数值
P=Minute(X)
取出X"分"部分的数值
P=Second(X)
取出X"秒"部分的数值
[说明]:Hour的返回值是0---23之间
[范例]:
X=10:34:23
P=Hour(X)
Q=Minute(X)
R=Second(X)
则输出结果:P=10,Q=34,R=23
3. DateSerial函数:合并年,月,日成为日期
[格式]:DateSerial(Y,M,D)
其中Y是年份,M为月份,D为日期
[说明]:
(1) M值若大于12,则月份从12月起向后推算M-12个月;若小于1,则月份从1月起向后推算1-M个月。
(2) 若日期D大于当月的日数,则日期从当月的日数起,向后推算D-当月日数;若小于1,则日期从1日起向前推算1-D日。
[范例]:
P=DateSerial(2000,02,02)
则结果为P=2000/02/02
4.TimeSerial函数:合并时,分,秒成为时间
[格式]:P=TimeSerial(H,M,S)
其中H为小时数,M为分钟数,S为秒数
[说明]:推算原理同上面的DateSerial
[范例]:
P=TimeSerial(6,32,45)
结果为:P=6:32:45
5.Date,Time,Now函数:读取系统的日期时间
[格式]:
P=Date()
P=Time()
P=Now()
[说明]:这三个函数都无参数
[范例]:
若当前时间为2003年8月29日晚上19点26分45秒,则
P=Now()
结果为:P=2003-08-29 19:26:45
6.MonthName:返回月份名称
[格式]:P=MonthName(X)
[说明]:X参数可传入1---12,则返回值为"一月"、"二月"……,但是在英文Windows环境下,返回的是"January","February"……
[范例]:
P=MonthName(1)
则P="一月"
7.WeekdayName:返回星期名称
[格式]:P=WeekdayName(X)
[说明]:X参数可传入1—7,则返回值为"星期日","星期一"……,但是在英文windows环境下,返回的是"Sunday","Monday"……
[范例]:
P=WeekdayName(1)
结果为:P="星期日"
函数名称 函数功能
Cbool(string) 转换为布尔值
Cbyte(string) 转换为字节类型的值
Ccur(string) 转换为货币类值
Cdate(string) 转换为日前类型的值
Cdbl(string) 转换为双精度值
Cint(string) 转换为整数值
Clng(string) 转换为长整型的值
Csng(string) 转换为单精度的值
Cstr(var) 转换为字符串值
Str(var) 数值转换为字符串
Val(string) 字符串转换为数值
***************************************
Abs(nmb) 返回数子的绝对值
Atn(nmb) 返回一个数的反正切
Cos(nmb) 返回一个角度的余炫值
Exp(nmb) 返回自然指数的次方值
Int(nmb) 返回数字的整形(进位)部份 8.4--9
Fix(nmb) 返回数字的整形(舍去)部份 8.4--8
Formatpercent(表达式) 返回百分比
Hex(nmb) 返回数据的16进制数
Log(nmb) 返回自然对数
Oct(nmb) 返回数字的8进制数
Rnd 返回大于“0”而小于“1”的随机数
Sgn(nmb) 判断一个数字的正负号
Sin(nmb) 返回角度的正铉值
Sqr(nmb) 返回数字的二次方根
Tan(nmb) 返回一个数的正切值
Asc(string) 返回ASCII字符串
Chr(charcode) 根据字符代码返回字符
Instr(string,searchstr) 返回被搜索字符串的第一个字符位置,string是字符串,searchstr是被搜索的字符串
InstrRev(string,searchstr) 同上,只是从右面开始搜索
Lcase(var) 把字符串变为小写
Left(string,nmb) 从string中返回从左面开始的nmb个字符串
Len(string) 返回字符串的长度
Ltrim(string) 截去字符串左边的空格
Filter(inputstrings,value) 返回字符串数组的字集,Inputstrings是字符串组,value是在数组中寻找的字符
Rtrim(string) 截去字符串右边的空格
Trim(string) 截去字符串前后空格
Mid(string,start,len) 在string中返回从start位置开始的len个字符
Replace(string,find,withstr) 在字符串string中,用withstr来替换find字符串
Right(string,nmb) 从string中返回从右面开始的nmb个字符串
Space(nmb) 返回指定空格的字符串
StrComp(string1,string2) 比较两个字符串
Ucase(string) 把字符串变为大写
****************************************
Date() 返回当前系统日期
DateAdd(interval,nmb,date) 用一个基础时间返回指定增加了时间间隔的日期,interval是间隔类型,yyyy-年,m-月,d-日,h-小时,n-分。
DateDiff(interval,nmb1,nmb2) 返回两个时间间隔,interval的意思同上
Datevalue(date) 发挥Date中的日期部份
Day(date) 返回天数
FormatDatetime(date) 返回格式化为日期的表达式
Hour(time) 返回时间的小时数
Minute(time) 返回时间的分钟数
Month(date) 返回日期中的月份
Now() 返回系统的日期和时间
Second(time) 返回时间中的秒数
Time() 返回系统的当前时间
Weekday(date) 返回星期几
WeekdayName(date) 返回星期几的中文名
Year(date) 返回年份
IsArray(var) 判断一个变量是否是数组
IsDate(var) 判断一个变量是否是日期
IsNull(var) 判断一个变量是否为空
IsNumeric 判断表达式是否包含数值
IsObject(var) 判断一个变量是否是对象
TypeName(var) 返回变量的数据类型
************************************
Array(list) 返回数组
CreateObject(class) 创建一个对象
GetObject(pathfilename) 得到文件对象
Inputbox(prompt) 提供一个可供输入数据的对话框
LBound(arrayP) 返回数组的最小索引
Msgbox(string) 输出一个消息框
Split(liststr) 从一个列表字符串中返回一个一维数组
Ubound(array) 返回数组的最大索引
我写了一段代码,注意你读取的方法,我改进了一下 Imports System.IO ‘代码窗体的最上端一定要声明
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sr As StreamReader Dim TextBox As Control
Dim i As Integer
i = 1
For Each TextBox In Me.Controls
If TypeName(TextBox) = "TextBox" Then sr = New StreamReader("c:\save\" i ".ini", System.Text.Encoding.Default) ’注意选择编码方式,按你原来的方法,未设置编码,显示的是乱码!路径请按你的情况改! TextBox.Text = sr.ReadToEnd()
i += 1 End If
Next
MsgBox("已经载入" i - 1 "个文件") End Sub注意:这样的代码是倒序的,第一个文本框显示的是最后一个文件的内容!请酌情处理!