我断断续续的问了半个月了,到现在还没能解决,我整理了一下,希望高手帮忙解决一下啊,我都快被这两道题弄疯了.万分感谢!!!
问题一:<图书管理系统>1.添加完记录后,返回main窗口,记录没有显示到各个text中啊,而且我点data1控件的←和→也没有显示记录,请问如何解决?
2.还有一个问题就是,我现在是在家做的,目录是d;\book文件夹里,可是我到学校后,把文件都放到C盘运行后,显示"d;\book\book.mdb不是有效路径",我把data1.databasename改成c;\book.mdb也不行,还是显示"d;\book\book.mdb不是有效路径",请问这是怎么回事,如何解决?程序有3个窗体(main,adddata,finddata)程序思想是:在main窗体中有5个text控件和一个data控件(设置了connect属性为Access,databasename属性为d:\book\book.mdb,recordscource为booklist),利用每个text控件的datasource和datafield属性连接book.mdb中的5个字段程序代码如下:main窗体中的代码:Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
answer = MsgBox("要添加新记录吗?", vbYesNo, "图书管理系统")
If answer = vbYes Then
adddata.Visible = True
main.Visible = False
End If
Case 1
answer = MsgBox("确定要删除此记录吗", vbOKCancel, "图书管理系统")
If answer = vbcabcel Then
Exit Sub
End If
If Data1.Recordset.RecordCount = 0 Then
MsgBox "无记录,无法删除!请添加记录!", vbOKOnly, "图书管理系统"
Exit Sub
End If
Data1.Recordset.Delete
Data1.Recordset.MoveFirst
Case 2
finddata.Show
Case 3
quit = MsgBox("确认退出?", vbYesNo, "退出")
If quit = vbYes Then End
End Select
End SubPrivate Sub Form_Load()
adddata.Visible = False '更新窗口
For i = 0 To 4
Text1(i).Enabled = False
Next
Data1.EOFAction = 0
End Sub
adddata窗体中的代码:Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
For i = 0 To 4
adddata.Text1(i).Text = ""
Next i
main.Data1.EOFAction = 2
Text1(0).SetFocus
main.Data1.Recordset.AddNew
main.Data1.Recordset.Fields("name") = adddata.Text1(0).Text
main.Data1.Recordset.Fields("author") = adddata.Text1(1).Text
main.Data1.Recordset.Fields("company") = adddata.Text1(2).Text
main.Data1.Recordset.Fields("data") = adddata.Text1(3).Text
main.Data1.Recordset.Fields("prix") = adddata.Text1(4).Text
main.Data1.Recordset.Update
For i = 0 To 4
adddata.Text1(i).Text = ""
Next i
main.Visible = True
adddata.Visible = False
Exit Sub
Case 1
main.Visible = True
adddata.Visible = False
Exit Sub
End Select
End Sub
finddata窗体的代码:Private Sub Command1_Click()
main.Data1.Recordset.FindFirst "name='" & Trim(Text1.Text) & "'"
If main.Data1.Recordset.NoMatch Then
MsgBox "无此书!", vbOKOnly
End If
Unload Me
End Sub
问题二:排序算法的演示(选择排序)我的思想是:
建立2组标签控件数组arr(1)--arr(10)和lab(1)--(10),都没有(0),都从1开始.
利用arr控件数组的caption属性显示随机生成的10个整数,然后就不变了.利用lab控件数组的caption属性来显示每趟的交换结果(就是内循环完一次的结果).然后有2个标签a和b,If Val(lab(j).Caption) < Val(lab(i).Caption) 则a和b分别等于lab(i)和lab(j),然后利用top和left属性把a和b显示lab(i)和lab(j)的地方,然后往上升,再像动画一样,一点一点的交换位置,然后在往下降.利用timer控件来控制时间(也就是交换位置时移动的速度).问题是当我在Sub jiaohuan()中引用i和j,报错说"找不到下标为0的控件"
我i和j都是从1开始,当然找不到,证明i和j的值根本不是Sub choose_Click()中i和j的值,请问如何才能叫Sub jiaohuan()中i和j的值随时都和Sub choose_Click()中i和j的值保持同步?
程序代码如下:
Dim time As Integer, sum As Integer
Dim i As Integer, j As Integer, k As Integer, temp As String, add As IntegerPrivate Sub display() '显示随机数
For i = 1 To 10
arr(i).Caption = Int(Rnd() * 100 + Rnd() * 10)'第一组,数不变
lab(i).Caption = Int(Rnd() * 100 + Rnd() * 10)'第二组,每次排序的结果放到这里
Next i
End Sub
Private Sub choose_Click()
sum = 0
Form1.Cls
Call display
For i = 1 To 10 - 1
time = 0
For j = i + 1 To 10
If Val(lab(j).Caption) < Val(lab(i).Caption) Then '判断是否需要交换数据
a.Visible = True '用于演示交换的一个标签
b.Visible = True '另一个
a.Left = arr(i).Left
b.Left = arr(j).Left
a.Top = arr(i).Top
b.Top = arr(j).Top
Call Timer1
'交换
temp = lab(i).Caption: lab(i).Caption = lab(j).Caption: lab(j).Caption = lab(i).Caption
time = time + 1 'time为每趟循环的交换次数
End If
Next j
Print "第"; i; "次循环排序 ";
For k = 1 To 10
Print lab(k).Caption;
Next k
Print " 数据交换了"; time; "次" '输出交换次数
sum = sum + time 'sum为总的交换次数
Next i
Print "------------------------------------------------------------------------------------------"
Print "利用选择排序法(从小到大)排序后的数据为:"
For i = 1 To 10
Print lab(i).Caption;
Next i
Print
Print "数据总共交换了"; sum; "次"
End Sub
Private Sub Timer1_Timer()
Call jiaohuan
End SubSub jiaohuan()'问题在这,这里的i和j的值是0,根本不是choose()中的i和j的值,请问怎么修改?
For add = a.Top To a.Top + a.Height Step -1
If a.Top > a.Top - a.Height Then a.Top = a.Top - 1
If b.Top > b.Top - b.Height Then b.Top = b.Top - 1
Next
For add = 1 To lab(j).Left - lab(i).Left
If a.Left < lab(j).Left Then a.Left = a.Left + 1
If b.Left > lab(i).Left Then b.Left = b.Left - 1
Next
For cc = a.Top = a.Top To a.Top - a.Height
a.Top = a.Top + 1
b.Top = b.Top + 1
NextEnd Sub
问题一:<图书管理系统>1.添加完记录后,返回main窗口,记录没有显示到各个text中啊,而且我点data1控件的←和→也没有显示记录,请问如何解决?
2.还有一个问题就是,我现在是在家做的,目录是d;\book文件夹里,可是我到学校后,把文件都放到C盘运行后,显示"d;\book\book.mdb不是有效路径",我把data1.databasename改成c;\book.mdb也不行,还是显示"d;\book\book.mdb不是有效路径",请问这是怎么回事,如何解决?程序有3个窗体(main,adddata,finddata)程序思想是:在main窗体中有5个text控件和一个data控件(设置了connect属性为Access,databasename属性为d:\book\book.mdb,recordscource为booklist),利用每个text控件的datasource和datafield属性连接book.mdb中的5个字段程序代码如下:main窗体中的代码:Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
answer = MsgBox("要添加新记录吗?", vbYesNo, "图书管理系统")
If answer = vbYes Then
adddata.Visible = True
main.Visible = False
End If
Case 1
answer = MsgBox("确定要删除此记录吗", vbOKCancel, "图书管理系统")
If answer = vbcabcel Then
Exit Sub
End If
If Data1.Recordset.RecordCount = 0 Then
MsgBox "无记录,无法删除!请添加记录!", vbOKOnly, "图书管理系统"
Exit Sub
End If
Data1.Recordset.Delete
Data1.Recordset.MoveFirst
Case 2
finddata.Show
Case 3
quit = MsgBox("确认退出?", vbYesNo, "退出")
If quit = vbYes Then End
End Select
End SubPrivate Sub Form_Load()
adddata.Visible = False '更新窗口
For i = 0 To 4
Text1(i).Enabled = False
Next
Data1.EOFAction = 0
End Sub
adddata窗体中的代码:Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
For i = 0 To 4
adddata.Text1(i).Text = ""
Next i
main.Data1.EOFAction = 2
Text1(0).SetFocus
main.Data1.Recordset.AddNew
main.Data1.Recordset.Fields("name") = adddata.Text1(0).Text
main.Data1.Recordset.Fields("author") = adddata.Text1(1).Text
main.Data1.Recordset.Fields("company") = adddata.Text1(2).Text
main.Data1.Recordset.Fields("data") = adddata.Text1(3).Text
main.Data1.Recordset.Fields("prix") = adddata.Text1(4).Text
main.Data1.Recordset.Update
For i = 0 To 4
adddata.Text1(i).Text = ""
Next i
main.Visible = True
adddata.Visible = False
Exit Sub
Case 1
main.Visible = True
adddata.Visible = False
Exit Sub
End Select
End Sub
finddata窗体的代码:Private Sub Command1_Click()
main.Data1.Recordset.FindFirst "name='" & Trim(Text1.Text) & "'"
If main.Data1.Recordset.NoMatch Then
MsgBox "无此书!", vbOKOnly
End If
Unload Me
End Sub
问题二:排序算法的演示(选择排序)我的思想是:
建立2组标签控件数组arr(1)--arr(10)和lab(1)--(10),都没有(0),都从1开始.
利用arr控件数组的caption属性显示随机生成的10个整数,然后就不变了.利用lab控件数组的caption属性来显示每趟的交换结果(就是内循环完一次的结果).然后有2个标签a和b,If Val(lab(j).Caption) < Val(lab(i).Caption) 则a和b分别等于lab(i)和lab(j),然后利用top和left属性把a和b显示lab(i)和lab(j)的地方,然后往上升,再像动画一样,一点一点的交换位置,然后在往下降.利用timer控件来控制时间(也就是交换位置时移动的速度).问题是当我在Sub jiaohuan()中引用i和j,报错说"找不到下标为0的控件"
我i和j都是从1开始,当然找不到,证明i和j的值根本不是Sub choose_Click()中i和j的值,请问如何才能叫Sub jiaohuan()中i和j的值随时都和Sub choose_Click()中i和j的值保持同步?
程序代码如下:
Dim time As Integer, sum As Integer
Dim i As Integer, j As Integer, k As Integer, temp As String, add As IntegerPrivate Sub display() '显示随机数
For i = 1 To 10
arr(i).Caption = Int(Rnd() * 100 + Rnd() * 10)'第一组,数不变
lab(i).Caption = Int(Rnd() * 100 + Rnd() * 10)'第二组,每次排序的结果放到这里
Next i
End Sub
Private Sub choose_Click()
sum = 0
Form1.Cls
Call display
For i = 1 To 10 - 1
time = 0
For j = i + 1 To 10
If Val(lab(j).Caption) < Val(lab(i).Caption) Then '判断是否需要交换数据
a.Visible = True '用于演示交换的一个标签
b.Visible = True '另一个
a.Left = arr(i).Left
b.Left = arr(j).Left
a.Top = arr(i).Top
b.Top = arr(j).Top
Call Timer1
'交换
temp = lab(i).Caption: lab(i).Caption = lab(j).Caption: lab(j).Caption = lab(i).Caption
time = time + 1 'time为每趟循环的交换次数
End If
Next j
Print "第"; i; "次循环排序 ";
For k = 1 To 10
Print lab(k).Caption;
Next k
Print " 数据交换了"; time; "次" '输出交换次数
sum = sum + time 'sum为总的交换次数
Next i
Print "------------------------------------------------------------------------------------------"
Print "利用选择排序法(从小到大)排序后的数据为:"
For i = 1 To 10
Print lab(i).Caption;
Next i
Print "数据总共交换了"; sum; "次"
End Sub
Private Sub Timer1_Timer()
Call jiaohuan
End SubSub jiaohuan()'问题在这,这里的i和j的值是0,根本不是choose()中的i和j的值,请问怎么修改?
For add = a.Top To a.Top + a.Height Step -1
If a.Top > a.Top - a.Height Then a.Top = a.Top - 1
If b.Top > b.Top - b.Height Then b.Top = b.Top - 1
Next
For add = 1 To lab(j).Left - lab(i).Left
If a.Left < lab(j).Left Then a.Left = a.Left + 1
If b.Left > lab(i).Left Then b.Left = b.Left - 1
Next
For cc = a.Top = a.Top To a.Top - a.Height
a.Top = a.Top + 1
b.Top = b.Top + 1
NextEnd Sub
第二个问题,你应该使用相对路径,VB中可以通过APP.PATH来得到程序本身运行时的路径。
你只要把数据库拷贝到EXE一个路径下面就可以使用的,其路径字符串为:
APP.PATH & "\DATABASE.MDB"