灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:8786回复:1

VB6 ADO ListView数据库分页显示

楼主#
更多 发布于:2012-09-08 11:55




  Dimlink1AsNewADODB.Connection
  DimrsAsNewADODB.Recordset
  DimpageAsInteger
  DimpubdatapathAsString
  Subopendatabase(datapathAsString)'打开数据库函数
  page=1'首次定义打开时的页码为1
  Iflink1.State=1Then'如果以连接过,则关闭,初始化下次事务
  link1.Close:list2.ListItems.Clear:list2.ColumnHeaders.Clear:c.Clear:list1.ListItems.Clear
  EndIf
  link1.ConnectionString="Provider=microsoft.jet.oledb.4.0;datasource=";datapath
  link1.Open
  pubdatapath=datapath
  Setbiaoming=link1.OpenSchema(adSchemaColumns)'创建数据库记录集
  tablename=""
  DoUntilbiaoming.EOF
  Ifbiaoming("table_name")<>tablenameThen'列出所有表
  tablename=biaoming("table_name")
  list1.ListItems.Add,,tablename
  EndIf
  biaoming.MoveNext
  Loop
  Setbiaoming=Nothing
  menu1.Enabled=True
  list1_MouseUp1,0,10,10
  EndSub
  PrivateSubCommand1_Click()'打开数据库
  d.DialogTitle="打开一个数据库文件进行浏览"
  d.InitDir=App.Path
  d.FileName=""
  d.Filter="Access数据库(mdb后缀,推荐格式) *.mdb"
  d.ShowOpen
  Ifd.FileName=""ThenExitSub
  opendatabased.FileName
  EndSub
  
  PrivateSubCommand4_Click()
  str1=InputBox("请输入一个1-5000之间的数字","重设",Text1.Text)
  Ifstr1=Text1.TextOrstr1=""ThenExitSub
  IfIsNumeric(str1)=FalseThenExitSub
  Ifstr1>5000Orstr1<1ThenExitSub
  Text1.Text=str1
  Iflist1.ListItems.Count=0ThenExitSubElselist1_MouseUp1,0,10,10
  EndSub  
  PrivateSubdown_Click()'功能,下一页
  page=page 1:list1_MouseUp1,0,10,10
  EndSub  
  PrivateSubfindstr_Click()'查询数据
  IfInStr(Text2.Text,"'")<>0ThenMsgBox"查询时关键字不允许包含'符号",vbCritical,"无效字符":ExitSub
  Ifrs.State=1Thenrs.Close
  rs.Open"select";c.Text;"from";list1.SelectedItem.Text;"where";c.Text;"like'";Text2.Text;"'",
link1,adOpenStatic,adLockReadOnly
  Ifrs.EOFThenMsgBox"没有符号条件的记录,请从新查找",vbCritical,"未发现记录":ExitSub
  DoWhileNotrs.EOF
  i=i 1
  str1=str1;i;":";rs(0);vbCrLf
  rs.MoveNext
  Loop
  MsgBoxstr1,vbExclamation,"查询结果-";rs.RecordCount;"匹配"
  EndSub
    
  PrivateSubForm_Resize()
  list1.ColumnHeaders(1).Width=list1.Width-80
  list2.Width=Me.ScaleWidth-list2.Left-30
  list1.Height=Me.ScaleHeight-list1.Top-30
  list2.Height=Me.ScaleHeight-(Me.ScaleHeight-down.Top)-150
  EndSub
  PrivateSubForm_Unload(CancelAsInteger)
  Ifrs.State=1Thenrs.Close
  Iflink1.State=1Thenlink1.Close
  Setrs=Nothing:Setlink1=Nothing
  EndSub  
  PrivateSublist1_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)'切换表
  OnErrorResumeNext
  Iflist1.ListItems.Count=0ThenExitSub
  Ifrs.State=1Thenrs.Close
  list2.ListItems.Clear:list2.ColumnHeaders.Clear:c.Clear
  rs.Open"select*from";list1.SelectedItem.Text,link1,adOpenStatic,adLockReadOnly
  IfErr.Number<>0Then
  MsgBox"该数据表不能支持的游标模式",vbCritical,"不规则的格式":ExitSub
  EndIf
  rs.PageSize=Text1.Text
  rslen=rs.RecordCount
  Ifrs.PageCount<pageThenpage=1
  Label3.Caption="共";rslen;"条记录,共";rs.PageCount;"页,当前页码";page
  Ifrs.PageCount>pageThendown.Enabled=TrueElsedown.Enabled=False
  Ifpage<>1Thenup.Enabled=TrueElseup.Enabled=False
  Setziduan=rs.Fields'定义字段记录集
  Fori=0Toziduan.Count-1
  list2.ColumnHeaders.Add,,ziduan(i).Name'根据字段指定视图列
  c.AddItemziduan(i).Name
  rs.MoveFirst'记录到尾后填充下一列
  rs.AbsolutePage=page'定义记录集的绝对页码
  Forr=0Tors.PageSize-1
  Ifrs.EOFThenExitFor
  rstext=rs(i)
  Ifi=0Then'首次直接填充第一列
  list2.ListItems.Add,,rstext
  Else'非首次填充下一下
  Ifrstext<>EmptyThenlist2.ListItems(r 1).ListSubItems.Add,,rstextElselist2.ListItems(r 1).ListSubItems.Add,,""
  EndIf
  rs.MoveNext
  Next
  Next
  Ifc.ListCount<>0Thenc.ListIndex=0:findstr.Enabled=TrueElsefindstr.Enabled=False
  Setziduan=Nothing
  EndSub  
  PrivateSubmenu01_Click(IndexAsInteger)
  SelectCaseIndex
  Case1:'建新表演示
  str1=1
  Fori=1Tolist1.ListItems.Count
  IfInStr(list1.ListItems(i).Text,"新建表")=1Thenstr1=str1 1
  Next
  link1.Execute"createtable新建表";str1;"(会员名Text,密码Varchar(8),年龄intnotnull,经验值";_
  "integer,加入日期DateTimenull)"
  link1.Execute"insertinto新建表";str1;"(会员名,密码,年龄,经验值,加入日期)values('风云舞','12345678'";_
  ",18,365,'";Now;"')"
  link1.Execute"insertinto新建表";str1;"(会员名,密码,年龄,经验值,加入日期)values('Lshdic','87654321'";_
  ",18,365,'";Now;"')"
  opendatabasepubdatapath'刷新重装载列表
  Case2:'刷新——重装载
  opendatabasepubdatapath
  Case3:'删除
  Ifrs.State=1Thenrs.Close
  link1.Execute"Droptable";list1.SelectedItem.Text
  opendatabasepubdatapath
  Case4:'表属性
  Ifrs.State=1Thenrs.Close
  rs.Open"select*from";list1.SelectedItem.Text,link1,adOpenStatic,adLockReadOnly
  Fori=0Tors.Fields.Count-1
  str1=str1;rs.Fields(i).Name;","
  str2=str2;rs.Fields(i).Type;","
  str3=str3;rs.Fields(i).ActualSize;","
  str4=str4;rs.Fields(i).DefinedSize;","
  Next
  MsgBox"包含字段:";str1;vbCrLf;vbCrLf;"字段类型:";str2;vbCrLf;vbCrLf;"第一行数据大小:";_
  str3;vbCrLf;vbCrLf;"每行数据预设容量:";str4,vbExclamation,"表属性"
  EndSelect
  EndSub  
  PrivateSuBText2_GotFocus()
  IfText2.Text="查找关键字..."ThenText2.Text=""
  EndSub  
  PrivateSuBText2_LostFocus()
  IfText2.Text=""ThenText2.Text="查找关键字..."
  EndSub  
  PrivateSubup_Click()'功能,上一页
  page=page-1:list1_MouseUp1,0,10,10
  EndSub


喜欢0 评分0
wldtk
新手上路
新手上路
  • 注册日期2012-10-11
  • 发帖数38
  • QQ
  • 火币41枚
  • 粉丝1
  • 关注0
沙发#
发布于:2012-12-03 14:36

选择千锋 选择卓越  千锋3G 手机软件开发培训第一品牌

iphone培训
千锋iphone培训

回复(0) 喜欢(0)     评分
游客

返回顶部