我断断续续的问了半个月了,到现在还没能解决,我整理了一下,希望高手帮忙解决一下啊,我都快被这两道题弄疯了.万分感谢!!!
问题一:<图书管理系统>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