各位大侠救急!关于数据库显示相关问题!

KKman 2003-10-15 04:37:35
有两个控件List1和DataGrid1,List1里显示的是多个表的名称,当双击List1里的表名时DataGrid1对应显示表的内容!(已经实现)问题:每次双击表名的时候DataGrid1里的数据都会刷新并添加新的内容,我不想覆盖原有的内容,而是要在原来的数据后面追加,应该怎么做?
很急,请懂的人高抬贵手打几个字帮帮忙!
...全文
46 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
amongwang 2003-10-29
  • 打赏
  • 举报
回复
如果每个表要显示的列数相同的话,可用UNOIN ALL 连接
sword281 2003-10-29
  • 打赏
  • 举报
回复
你需要在数据库中新建一个表名叫temp的表,它的结构与你要选择的表的结构相同
建相同结构用select * into 建表名 from 相同结构表名 where 1=2
dim existtable as boolean
existable=false
dim rstemp as new adodb.recordset
set rstemp=cn.openschema(adschematable)

do until rstemp.eof
if rstemp!table_name ="temp" then
existtable=true
exit do
endif
rstemp.movenext
loop
if existtable=false then
sql="select * into temp from " & List1.List(List2.ListIndex) & "where 1=2"
cnn1.execut sql
endif

将以上代码加在Set rscourse = New ADODB.Recordset 上面即可



KKman 2003-10-22
  • 打赏
  • 举报
回复
Set cnn1 = New ADODB.Connection
cnn1.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & App.Path & "\gsm2.mdb;"
Set rscourse = New ADODB.Recordset
If rscourse.State = adStateOpen Then rs.Close
If List1.List(List2.ListIndex) <> "" Then
Dim sql As String
sql = "insert into temp select * from " & List1.List(List2.ListIndex)
cnn1.Execute sql
rscourse.Open "temp", cnn1, adOpenDynamic, adLockPessimistic, adCmdTable
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
End If
出错:找不到输出表 'temp'
请帮忙看看
sword281 2003-10-21
  • 打赏
  • 举报
回复
可用union all
只要你的所有表名的域名相同
union all 是连接所有的表
用第一种同样能实现

Private Sub List1_DblClick()
If rs.State = adStateOpen Then rs.Close
If List1.List(List1.ListIndex) <> "" Then
Dim sql As String
sql = "insert into temp select * from " & List1.List(List1.ListIndex)
cn.Execute sql
rs.Open "temp", cn, adOpenDynamic, adLockPessimistic, adCmdTable
Set DataGrid1.DataSource = rs
DataGrid1.Refresh

End If


其中temp为一空表它的结构和你选择表的结构一样
第二种已通过测试
KKman 2003-10-21
  • 打赏
  • 举报
回复
谢谢sword281() 回答
第一种方法不能用,应为Union只适用于2个表的记录集数目相等的情况!第二种方法能不能写的具体点,insert into temp select * from aaa在可视化数据管理器里编译出错!
sword281 2003-10-20
  • 打赏
  • 举报
回复
要用一变量rs,
用union all连接你所有选择的表名
第一种方法temp union all 选择的表名

第二种方法在list1_dbclick事件中用sql语句insert into temp select * from 选择的表名
其中temp为一表名(在数据库中的空表),用rs.open方式打开,赋给
datagrid1.datasource

sword281 2003-10-20
  • 打赏
  • 举报
回复
在这条语句Set DataGrid1.DataSource = rscourse下加一条
datagrid1.refresh
KKman 2003-10-19
  • 打赏
  • 举报
回复
谢谢不甜,请问这个函数能用在DataGrid1上面吗?我写打印程序是用DataGrid1的,如果用flexgrid的话打印要重写!还有我想请教一个问题,VB里不是有个曲线图控件吗?但我觉得不太好用,数据多了以后X轴上显示的字都看不见了,这个控件的打印属性是什么,我比较笨MSDN没查到!或者您能推荐几个做曲线图的外部控件吗?谢谢!
KKman 2003-10-17
  • 打赏
  • 举报
回复
以下是我出现问题的代码!
Private Sub Form_Load()
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
con.Provider = "Microsoft.Jet.OLEDB.3.51"
con.Open App.Path & "\gsm2.mdb"
Set rs = New ADODB.Recordset
rs.Open "SELECT mobile FROM user", con, adOpenKeyset, adLockPessimistic
Do While rs.EOF = False
If rs.Fields("mobile") Like "###########" <> True Then
rs.MoveNext
Else
List1.AddItem rs.Fields("mobile")
rs.MoveNext
End If
Loop
End Sub

Private Sub List1_DblClick()
Set cnn1 = New ADODB.Connection
cnn1.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & App.Path & "\gsm2.mdb;"
Set rscourse = New ADODB.Recordset
If List1.List(List1.ListIndex) <> "" Then
SQL = "SELECT * FROM " & List1.List(List1.ListIndex)
End If

rscourse.Open SQL, cnn1, adOpenStatic, adLockOptimistic
Set DataGrid1.DataSource = rscourse
End Sub
我已经用代码连接数据库了,问题还是没解决,不知道问题出在哪里?
我是个初学者,请大家不要见笑!谢谢各位帮忙!
golden24kcn 2003-10-17
  • 打赏
  • 举报
回复
还没有搞定吗?呵呵

Public Sub FillGrid(FormatString As String, SQL As String, Grid As MSFlexGrid, GridCol As Integer)

Dim Rst As ADODB.Recordset
Dim I As Integer, J As Integer

On Error GoTo er
Set Rst = New ADODB.Recordset
Rst.CursorLocation = adUseClient
Rst.Open SQL, Conn, adOpenKeyset, adLockReadOnly, adCmdText

''''Grid.Clear 我本来是写这个函数,这句是打开的
'''' 不过你想让前一结果不清除,那么它就没有用了
Grid.Rows = 1
Grid.Cols = GridCol
Grid.FormatString = FormatString
For I = 1 To Rst.RecordCount
Grid.Rows = Grid.Rows + 1
For J = 1 To GridCol
Grid.TextMatrix(Grid.Rows - 1, J - 1) = Rst.Fields(J - 1) & ""
Next
Rst.MoveNext
Next

Rst.Close
Set Rst = Nothing
SQL = ""
If Grid.Rows = 1 Then MsgBox "您所指定的查询结果为空!", 64
Exit Sub

呵呵,想通了吗?用flexGrid吧,比datagrid强多了,据我所知,很多人flexgrid都不喜欢用了,都用vsflexgrid了,呵呵,我也落伍了
KKman 2003-10-17
  • 打赏
  • 举报
回复
有用过DataGrid1的吗?应为我以前做过打印现在用在这个程序上,如果改成其他控件要重写打印很烦!谢谢帮忙!
liaorui 2003-10-17
  • 打赏
  • 举报
回复
DATAGRID我没做过,不过LISTVIEW我做过。

每次都动态的去添加列,然后把得到的记录集的内容添加到LISTVIEW后面就可以了
KKman 2003-10-17
  • 打赏
  • 举报
回复
楼上大哥,怎么追加啊?因该写什么代码?Set DataGrid1.DataSource = rscourse这句不写数据不会显示的啊!
yoki 2003-10-17
  • 打赏
  • 举报
回复
Set DataGrid1.DataSource = rscourse
这样肯定不行啊
必须在后面追加

xz1980 2003-10-15
  • 打赏
  • 举报
回复
使用DataGrid1.Columns.Item
j4sxw 2003-10-15
  • 打赏
  • 举报
回复
用代码实现
j4sxw 2003-10-15
  • 打赏
  • 举报
回复
我用贯了msflexgrid,觉得不错。方便
haipingma 2003-10-15
  • 打赏
  • 举报
回复
綁定除非用union all
用MSHFlexgrid來循環賦值
golden24kcn 2003-10-15
  • 打赏
  • 举报
回复
那么就不要用datagrid了,用flexgrid什么的吧
守城小轩 2003-10-15
  • 打赏
  • 举报
回复
编程实现,不可以用绑定
加载更多回复(1)
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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