VB中,建了个ACCESS数据库,里面有6张表,现在我想把这6张表合并显示在控件MSHFlexGrid1,而且可以查询

VB中,建了个ACCESS数据库,里面有6张表,现在我想把这6张表合并显示在控件MSHFlexGrid1,而且可以查询,第1张

合并后再查询就行了。合并简单 就用个UNION函数

(select * from 表1) Union (select * from 表2) Union .........

这才叫合并。要匹配字段那不叫合并,是叫匹配查询。用LEFT JION是把语句左边的表去匹配右边名称的表,RIGHT JION 相反,INNER JOIN是完全匹配,你是要做联合还是匹配呢。

在一个数据库范围内都可以进行N个表的 *** 作。在N个数据库 *** 作N个表就要先在SQL上建立好查询表,或者用VS部署好再 *** 作。VB用数据环境可以实现,写入新表再 *** 作办法不是很好,相当耗内存。

新建工程时选数据工程,此时VB6集成调试环境左边工具箱内已加载了有关数据库编程必须的控件

然后在FORM1窗体中添加ADODC控件和DATAGRID控件,将DATAGRID1的属性DATASOURCE选ADODC1,打开ADODC1控件属性页使用连接字符串,选生成,在提供者选项中选MICROSOFT jet 4.0 OLE DB Provider,然后按要求连接数据库等。在ADODC1控件属性页使用连接字符串空白文本窗口中就有一长串字符串,注意该字符串可复制到程序代码用于编程。ADODC1控件属性页的数据源内有命令文本(SQL)编写窗口可编写SQL查询语言。该窗口的SQL语句可复制到程序代码用于编程。

SQL查询语言主要结构为:

Select 查询字段 from 表名 Where 查询条件语句 [排序语句或分组语句]

查询字段必须分别用(西文)逗号分开或就用一个*号代替,上述查询中排序语句建议最好应用。

SQL查询语言如有错程序运行时告诉你出错,作相应改动即可。本人一般先按上述连接,SQL用"SELECT * FROM TabelName"作调试,无问题,用一个按钮孔件将前述需复制的连接字符串和SQL查询语言先复制于按钮控件的CLICK事件中备着,以便放着以后使用。然后删去ADODC1孔件,再添加ADODC1控件再添其他内容。

以下为代码实例:

Private Sub Form_Load()

Text1 = ""

With Adodc1

Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=E:\db1.mdbPersist Security Info=False"

Adodc1.RecordSource = "select name from b1 order by name"

Adodc1.Refresh

DataGrid1.Refresh

End With

End Sub

Private Sub Text1_Change()

Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=E:\db1.mdbPersist Security Info=False"

Adodc1.RecordSource = "select name from b1 where name >='" &Text1 &"' order by name"

Adodc1.Refresh'对查询更新

DataGrid1.Refresh

End Sub

给你一个示例代码吧

Private Sub cmdOK_Click()

Static nErr As Integer

Dim bErr As Boolean

Dim conn As ADODB.Connection

Dim rs As ADODB.Recordset

Dim strSql As String

If txtUser.Text = "" Or txtPwd.Text = "" Then

MsgBox "用户或密码不能为空!", vbCritical, "错误"

bErr = True

Else

Set conn = OpenConnForSqlServer("127.0.0.1\SQLEXPRESS", "xsfh", "")

strSql = "select * from users where name = '" &txtUser.Text &"' and password='" &txtPwd.Text &"'"

Set rs = OpenRecordset(strSql, conn)

If rs.EOF Then

MsgBox "错误的用户名或密码!", vbCritical, "错误"

bErr = True

Else

Unload Me

frmMain.Show

End If

End If

If bErr Then

nErr = nErr + 1

If nErr = 3 Then

Unload Me

Else

txtUser.Text = ""

txtPwd.Text = ""

txtUser.SetFocus

End If

End If

End Sub

Public Function OpenConnForSqlServer(ByVal ServerName As String, ByVal UserId As String, ByVal PassWord As String, Optional ByVal DateBaseName As String = "") As ADODB.Connection

Dim AdoConn As New ADODB.Connection

Dim strConn As String

With AdoConn

strConn = "Provider=SQLOLEDB.1Persist Security Info=TrueUser ID=" &UserId &"Password=" &PassWord &"Data Source=" &ServerName

If DateBaseName <>"" Then strConn = strConn &"database=" &DateBaseName

.ConnectionString = strConn

.Open

End With

Set OpenConnForSqlServer = AdoConn

End Function

Public Function OpenConnForSqlServerByWin(ByVal ServerName As String, Optional ByVal DateBaseName As String = "") As ADODB.Connection

Dim AdoConn As New ADODB.Connection

Dim strConn As String

With AdoConn

strSql = "Provider=SQLOLEDB.1Integrated Security=SSPIPersist Security Info=FalseData Source=" &ServerName

If DateBaseName <>"" Then strConn = strConn &"Initial Catalog=" &DateBaseName

.ConnectionString = strConn

.Open

End With

Set OpenConnForSqlServerByWin = AdoConn

End Function

Public Function OpenRecordset(ByVal strSql As String, ByVal AdoConn As ADODB.Connection) As ADODB.Recordset

Dim rs As New ADODB.Recordset

With rs

.CursorLocation = adUseClient

.CursorType = adOpenDynamic

.Open strSql, AdoConn, , , adCmdText

End With

Set OpenRecordset = rs

End Function

Public Function RunTrans(ByVal tranSql As String, ByVal AdoConn As ADODB.Connection)

With AdoConn

.BeginTrans

.Execute tranSql

.CommitTrans

End With

End Function


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6839950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存