1.在数据编程时,如果使用的ACCESS设计表,如果里面有一个字段为:自动编号。为LONG类型的,在添加到内容到数据库中的时候他将自动赋值在原先的基础上加1,但是现在我发现如果原来的编号是5,添加一个后新纪录的编号为6,但是如果此时将编号为6的记录删除(通过程序)后在添加新记录的时候编号自动赋值为7,而不是应当跟着5后面的6,因为我想通过这个字段的值来查看究竟有几项记录,如果这样的话就不正确了,请问如何解决!2.如果通过一个Text框来接收数字,然后通过这个函数来转换成需要的类型,比如整形
cint(text1.text),在输入数字的时候是能够正确转换的,但是如果在文本框中输入随机的字符串,比如:sdhhs ,此时转化将出现错误,不知道在程序中如何控制,请指教!3.在使用DataGird控件来显示某一张表里面的内容时,由于内容长短不一,设计的时候根据长短都设计好了各个字段显示的长度,但是在添加新内容刷新以后它显示的字段顺序以及各项的长度又跟初始状态一样,都是相同的,不知道为什么,需要设置哪些属性!请指教。
cint(text1.text),在输入数字的时候是能够正确转换的,但是如果在文本框中输入随机的字符串,比如:sdhhs ,此时转化将出现错误,不知道在程序中如何控制,请指教!3.在使用DataGird控件来显示某一张表里面的内容时,由于内容长短不一,设计的时候根据长短都设计好了各个字段显示的长度,但是在添加新内容刷新以后它显示的字段顺序以及各项的长度又跟初始状态一样,都是相同的,不知道为什么,需要设置哪些属性!请指教。
2、可以在text的keydown或者keyup事件中获得按键的keycode或者KeyAscii 再判断是否为数字,如果不是则把keycode=0
3、从来不用DataGird控件,抱歉 hehe
2.先判断一下是否为数字,再转换,判断用函数:isnumeric(text1.text),true为数值。
3.你可以刷新后在设置一次datagrid的列宽!
当输入为sdhhs时,cint(val(trim(text1.text)))表达式的值为0。
如果你要控制用户的输入,你可以用IsNumeric 函数来判断是否为数字。
例:
if IsNumeric(trim(text1.text)) then
a=cint(trim(text1.text))
else
msgbox "数据非法,请重新输入!"
end if3.你的datagrid控件是与ADO控件绑定的吧?!
使用ADO对象做,不用ADO控件。
你首先要在VB菜单中:
“工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.X Library”
"工程"-->“部件”-->“MicroSoft DataGrid Control 6.0”
注:2.X为版本号,如果你机子上有高版本的就用高版本的,如:2.5或2.6的。示例:private sub command1_click()
dim adoCN as new adodb.connection'连接对象
dim rs as new adodb.recordset'记录集对象
dim strcon as string,sqlstr as string
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & App.Path & "\data\XXXX.mdb;" _
& "Persist Security Info=False"'连接字符串
adoCN.Open strcon'打开连接(数据库)
rs.CursorLocation = adUseClient'使用客户端游标
sqlstr = "SELECT * FROM XXXX"
rs.Open strSQL, strcon,3,3
if rs.bof and rs.eof then
msgbox "没有查询到记录!!!"
exit sub
else
set datagird1.datasource=rs'将记录集显示在datagrid控件中
datagrid1.refresh
end if
rs.close
set rs=nothing
end sub
DataE.conMathData.Close
DataE.conMathData.Open
DataE.cmdZhuzuo
dgrdzhu.ClearFields(dgrdzhu 为DGataGird控件的名称)
dgrdzhu.DataMember = DataE.Commands("cmdZhuzuo").Name
dgrdzhu.ReBind