很简单的问题在线等!

xx8081 2003-06-27 09:02:05
1、有几个textbox怎样用回车从这个跳到另一个?
2、怎样在按钮下对数据库操作(怎么写连接数据库的语句,我现在有一个.mdb)
...全文
32 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
xx8081 2003-06-27
  • 打赏
  • 举报
回复
错误:在一个已关闭或无效的连接对象上参照不被允许
wtty9822 2003-06-27
  • 打赏
  • 举报
回复
sho
Alicky 2003-06-27
  • 打赏
  • 举报
回复
楼上楼上的内容还要建一个数据库。
放在应用程序目录下。
取名:test.mdb
内有一表,取名:A03
表中有四个字段:
A001 数字
A002 文本
A003 文本
A004 文本

Alicky 2003-06-27
  • 打赏
  • 举报
回复
补充:
以下内容用ADO实现。
你在用的时候,首先必须引用ADO
在"工程"-->"引用"
选择“Microsoft ActiveX DataObjects 2.5 Library”
就可以了。
Alicky 2003-06-27
  • 打赏
  • 举报
回复
新建一个工程
在窗口上加三个按钮,命名为:CmdAdd,CmdDel,CmnEdit
再加一个ListView,命名为:ListView1

'''''''''''''''''''''''''以下是Frmmain窗口内容
Option Explicit
'这是一个简单的例子

Private Sub CmdAdd_Click()
Dim Rs As New ADODB.Recordset
Dim IntID As Integer
Rs.Open "Select Max(A001) As ID From A03", MdbConn, adOpenKeyset, adLockOptimistic
If IsNull(Rs.Fields("ID")) Then
IntID = 1
Else
IntID = Rs.Fields("ID") + 1
End If
Rs.Close
Set Rs = Nothing
On Error Resume Next
MdbConn.Execute "Insert Into A03 Values(" & IntID & ",'Str1','Str2','Str3')" '说明:这里的Str1,Str2,Str3你可以从TEXT里读者
If MdbConn.Errors.Count > 0 Then
MsgBox "保存失败!", vbCritical, "系统提示"
Else
Call InitListView
End If
End Sub

Private Sub CmdDel_Click()
'删除编号最大的,你可以自己改
Dim Rs As New ADODB.Recordset
Dim IntID As Integer
Rs.Open "Select Max(A001) As ID From A03", MdbConn, adOpenKeyset, adLockOptimistic
If IsNull(Rs.Fields("ID")) Then
IntID = 0
Else
IntID = Rs.Fields("ID")
End If
Rs.Close
Set Rs = Nothing
If IntID = 0 Then
MsgBox "无数据可删除!", vbCritical, "系统提示"
Else
On Error Resume Next
MdbConn.Execute "Delete * From A03 Where A001=" & IntID
If MdbConn.Errors.Count > 0 Then
MsgBox "删除失败!", vbCritical, "系统提示"
Else
Call InitListView
End If
End If
End Sub

Private Sub CmdEdit_Click()
'为了方便,我在这里也只编辑最大编号的记录
Dim Rs As New ADODB.Recordset
Dim IntID As Integer
Rs.Open "Select Max(A001) As ID From A03", MdbConn, adOpenKeyset, adLockOptimistic
If IsNull(Rs.Fields("ID")) Then
IntID = 0
Else
IntID = Rs.Fields("ID")
End If
Rs.Close
Set Rs = Nothing
If IntID = 0 Then
MsgBox "无数据可编辑!", vbCritical, "系统提示"
Else
On Error Resume Next
MdbConn.Execute "Update A03 Set A002='1111',A003='2222',A004='3333' Where A001=" & IntID
If MdbConn.Errors.Count > 0 Then
MsgBox "编辑失败!", vbCritical, "系统提示"
Else
Call InitListView
End If
End If
End Sub

Private Sub Command1_Click()
Dim Rs As New ADODB.Recordset
Rs.Open "A03", MdbConn, adOpenKeyset, adLockOptimistic 'mdbconn为公共连接
Rs.Save "C:\1.xml" '自动要C盘根目录下生成1.txt这个文件
Rs.Close
Set Rs = Nothing
End Sub

Private Sub Form_Load()
Dim Str As String
Str = PulbicMdbConn(IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\") & "test.mdb")
If Str <> "ok" Then
MsgBox "连接数据库失败!" & vbCrLf & "原因:" & Str
End
End If
Call InitListView
End Sub

Private Sub InitListView()
Dim Rs As New ADODB.Recordset
Dim ItemX As ListItem
Rs.Open "A03", MdbConn, adOpenKeyset, adLockOptimistic
ListView1.ListItems.Clear
While Not Rs.EOF
Set ItemX = ListView1.ListItems.Add(, , Rs.Fields("A001"))
ItemX.ListSubItems.Add , , Rs.Fields("A002")
ItemX.ListSubItems.Add , , Rs.Fields("A003")
ItemX.ListSubItems.Add , , Rs.Fields("A004")
Rs.MoveNext
Wend
Rs.Close
Set Rs = Nothing
End Sub


'''''''''''''''''''''''''以下是模块内容
Option Explicit
Public MdbConn As New ADODB.Connection
'功能简介:建立本地数据库公共链接
'参数一:MDB数据库地址路径
'返回值:"ok"--成功
Function PulbicMdbConn(ByVal StrPath As String) As String
On Error GoTo MdbConnErr
Dim StrSql As String
StrSql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & StrPath & ";Persist Security Info=False"
If MdbConn.State <> 0 Then MdbConn.Close
MdbConn.Open StrSql
PulbicMdbConn = "ok"
Exit Function
MdbConnErr:
PulbicMdbConn = Err.Description
If MdbConn.State <> 0 Then MdbConn.Close: Set MdbConn = Nothing
End Function

'功能简介:关闭本地数据库公共链接
Function PublicMdbClose()
If MdbConn.State <> 0 Then MdbConn.Close: Set MdbConn = Nothing
End Function
xx8081 2003-06-27
  • 打赏
  • 举报
回复
谢谢 lxqlogo0(群子)
请问App.Path 是什么?
我怎么添加一条纪录?
淡蓝色2 2003-06-27
  • 打赏
  • 举报
回复
第一个问题:在sendkeys("{tab}")之前要先keycode=0,否则会发出叮的一声.
9raul 2003-06-27
  • 打赏
  • 举报
回复
val(Text1.text)
xx8081 2003-06-27
  • 打赏
  • 举报
回复
奇怪了,我还没有做操作数据库的事,自然不用ado,但是错误依然
qingming81 2003-06-27
  • 打赏
  • 举报
回复
引用“Microsoft ActiveX DataObjects 2.5 Library”
怎么获得text1中的数字:val(text1.text)
qingming81 2003-06-27
  • 打赏
  • 举报
回复
错误:过程申明与同名事件或过程的描述不匹配
ADO没有引用。
qingming81 2003-06-27
  • 打赏
  • 举报
回复
Private Sub Text1_KeyPress(KeyAscii As Integer)
if keyascii = 13 then text2.setfocus
end sub
xx8081 2003-06-27
  • 打赏
  • 举报
回复
错误:过程申明与同名事件或过程的描述不匹配
怎么回事?
lxqlogo0 2003-06-27
  • 打赏
  • 举报
回复
1.private text1_keydown(KeyCode As Integer, Shift As Integer)
if keycode=chr(13) then text2.setfocus
end sub
2.引用ado
Dim objcon As New ADODB.Connection
Dim objrs As New ADODB.Recordset
objcon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\*.mdb"
objrs.Open "select * from infoTable ", objcon, 3, 1

xx8081 2003-06-27
  • 打赏
  • 举报
回复
另外怎么获得text1中的数字?
xx8081 2003-06-27
  • 打赏
  • 举报
回复
能不能解释一下?
第二个问题呢?
饮水需思源 2003-06-27
  • 打赏
  • 举报
回复
private text2_keydown(KeyCode As Integer, Shift As Integer)
if keycode=vbkeyup then text1.setfocus
if keycode=vbkeyreturn or keycode=vbkeydown then text3.setfocus
end sub
Sophie719 2003-06-27
  • 打赏
  • 举报
回复
不好意思,少了s

应该用SendKeys
Sophie719 2003-06-27
  • 打赏
  • 举报
回复
If KeyCode = 13 Then
SendKey "{Tab}"
fafan 2003-06-27
  • 打赏
  • 举报
回复
1.
if keyascii=13 then
sendkeys "{tab}"
end if
'在textbox中设置一下tabindex属性

2.
'先引用Microsoft ActiveX Objects 2.5 Library
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
dim strsql as String

Set rs = New ADODB.Recordset
Set conn = New ADODB.Connection

conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\XXX.mdb;" & "Jet OLEDB:Database Password=XXXXXX"
conn.Open

strsql = "select * from 表名"
rs.Open strsql, conn, adOpenDynamic, adLockOptimistic, adCmdTable
''''''''''''''''''''
'对数据库操作
''''''''''''''''''''
rs.close
conn.close
set rs=nothing
set conn=nothing
加载更多回复(1)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧