在vb中如何用MSHFlexGrid控制元件將access資料庫中內容顯示出來????
uj5u.com熱心網友回復:
用ADO取出記錄然后set mshflexgrid1.recordset=rs 就可以
uj5u.com熱心網友回復:

修改代碼
Private Sub Command1_Click()
'確認修改
For I = 0 To 8
If Text1(I).Text = "" Then
MsgBox "你沒有輸入第" & I + 1 & "個文本框的資料,請輸入!", 16, "錯誤提示!"
Exit Sub
End If
Next I
If IsDate(Text1(3).Text) = False Then
MsgBox "你輸入的生產時間不是日期,請重新輸入!", 16, "錯誤提示!"
Exit Sub
End If
If IsDate(Text1(4).Text) = False Then
MsgBox "你輸入的銷售時間不是日期,請重新輸入!", 16, "錯誤提示!"
Exit Sub
End If
If IsNumeric(Text1(7).Text) = False Then
MsgBox "你輸入的數量不是數字,請重新輸入!", 16, "錯誤提示!"
Exit Sub
End If
Adodc1.RecordSource = "Select * From 銷售表 Where ID=" & AID & ""
Adodc1.Refresh
Adodc1.Recordset.Fields("名稱") = Text1(0).Text
Adodc1.Recordset.Fields("型號") = Text1(1).Text
Adodc1.Recordset.Fields("批次") = Text1(2).Text
Adodc1.Recordset.Fields("生產時間") = Text1(3).Text
Adodc1.Recordset.Fields("銷售時間") = Text1(4).Text
Adodc1.Recordset.Fields("銷售人員") = Text1(5).Text
Adodc1.Recordset.Fields("購買廠家") = Text1(6).Text
Adodc1.Recordset.Fields("數量") = Val(Text1(7).Text)
'Adodc1.Recordset.Fields("編碼") = Text1(8).Text '商品編碼不能修改
Adodc1.Recordset.Update
MsgBox "祝賀你!這個記錄已經修改!", 64, "修改成功!"
Unload Me
MSH控制元件操作實體.Show
End Sub
添加代碼
Private Sub Command2_Click()
'確認添加
For I = 0 To 8
If Text1(I).Text = "" Then
MsgBox "你沒有輸入第" & I + 1 & "個文本框的資料,請輸入!", 16, "錯誤提示!"
Exit Sub
End If
Next I
If IsDate(Text1(3).Text) = False Then
MsgBox "你輸入的生產時間不是日期,請重新輸入!", 16, "錯誤提示!"
Exit Sub
End If
If IsDate(Text1(4).Text) = False Then
MsgBox "你輸入的銷售時間不是日期,請重新輸入!", 16, "錯誤提示!"
Exit Sub
End If
If IsNumeric(Text1(7).Text) = False Then
MsgBox "你輸入的數量不是數字,請重新輸入!", 16, "錯誤提示!"
Exit Sub
End If
Adodc1.RecordSource = "Select * From 銷售表"
Adodc1.Refresh
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("名稱") = Text1(0).Text
Adodc1.Recordset.Fields("型號") = Text1(1).Text
Adodc1.Recordset.Fields("批次") = Text1(2).Text
Adodc1.Recordset.Fields("生產時間") = Text1(3).Text
Adodc1.Recordset.Fields("銷售時間") = Text1(4).Text
Adodc1.Recordset.Fields("銷售人員") = Text1(5).Text
Adodc1.Recordset.Fields("購買廠家") = Text1(6).Text
Adodc1.Recordset.Fields("數量") = Val(Text1(7).Text)
Adodc1.Recordset.Fields("編碼") = Text1(8).Text
Adodc1.Recordset.Fields("編碼0") = Val(Label1.Caption)
Adodc1.Recordset.Update
MsgBox "祝賀你!一條新的記錄已經存盤!", 64, "添加成功!"
Unload Me
MSH控制元件操作實體.Show
End Sub
洗掉代碼
Private Sub Command3_Click()
'確認洗掉
If AID = 0 Then
MsgBox "你沒有選擇要洗掉的記錄,請點擊上面串列中需要洗掉的記錄!", 16, "錯誤提示!"
Exit Sub
End If
If MsgBox("你確實要洗掉這個記錄嗎?", 33, "洗掉確認!") = 1 Then
Adodc1.RecordSource = "Select * From 銷售表 Where ID=" & AID & ""
Adodc1.Refresh
Adodc1.Recordset.Delete
MsgBox "祝賀你!這個記錄已經洗掉!", 64, "洗掉成功!"
Unload Me
MSH控制元件操作實體.Show
End If
End Sub
啟動代碼
Private Sub Form_Load()
For I = 0 To 8
Text1(I).Text = ""
Next I
Label1.Caption = ""
Adodc1.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & "\新建資料庫.accdb;Jet OLEDB:Database Password=;"
Adodc1.RecordSource = "Select * From 銷售表"
Adodc1.Refresh
Dim SST As Integer
SST = Adodc1.Recordset.RecordCount
MSHFlexGrid1.Clear
MSHFlexGrid1.Visible = True
With MSHFlexGrid1
.Cols = 10
.Rows = SST + 1
.TextMatrix(0, 0) = "ID"
.TextMatrix(0, 1) = "名稱"
.TextMatrix(0, 2) = "型號"
.TextMatrix(0, 3) = "批次"
.TextMatrix(0, 4) = "生產時間"
.TextMatrix(0, 5) = "銷售時間"
.TextMatrix(0, 6) = "銷售人員"
.TextMatrix(0, 7) = "購買廠家"
.TextMatrix(0, 8) = "數量"
.TextMatrix(0, 9) = "編碼"
.ColWidth(0) = 600
.ColWidth(1) = 1200
.ColWidth(2) = 1000
.ColWidth(3) = 800
.ColWidth(4) = 1000
.ColWidth(5) = 1000
.ColWidth(6) = 800
.ColWidth(7) = 1400
.ColWidth(8) = 600
.ColWidth(9) = 800
For I = 1 To SST
.TextMatrix(I, 0) = Adodc1.Recordset.Fields("ID")
.TextMatrix(I, 1) = Adodc1.Recordset.Fields("名稱")
.TextMatrix(I, 2) = Adodc1.Recordset.Fields("型號")
.TextMatrix(I, 3) = Adodc1.Recordset.Fields("批次")
.TextMatrix(I, 4) = Adodc1.Recordset.Fields("生產時間")
.TextMatrix(I, 5) = Adodc1.Recordset.Fields("銷售時間")
.TextMatrix(I, 6) = Adodc1.Recordset.Fields("銷售人員")
.TextMatrix(I, 7) = Adodc1.Recordset.Fields("購買廠家")
.TextMatrix(I, 8) = Adodc1.Recordset.Fields("數量")
.TextMatrix(I, 9) = Adodc1.Recordset.Fields("編碼")
Adodc1.Recordset.MoveNext
Next I
End With
End Sub
連接代碼
Private Sub MSHFlexGrid1_Click()
If Val(MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0)) > 0 Then
Dim PPID As Long
PPID = Val(MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0))
Adodc1.RecordSource = "Select * From 銷售表 Where ID=" & PPID & ""
Adodc1.Refresh
AID = Adodc1.Recordset.Fields("ID")
Text1(0).Text = Adodc1.Recordset.Fields("名稱")
Text1(1).Text = Adodc1.Recordset.Fields("型號")
Text1(2).Text = Adodc1.Recordset.Fields("批次")
Text1(3).Text = Adodc1.Recordset.Fields("生產時間")
Text1(4).Text = Adodc1.Recordset.Fields("銷售時間")
Text1(5).Text = Adodc1.Recordset.Fields("銷售人員")
Text1(6).Text = Adodc1.Recordset.Fields("購買廠家")
Text1(7).Text = Adodc1.Recordset.Fields("數量")
Text1(8).Text = Adodc1.Recordset.Fields("編碼")
Label1.Caption = Adodc1.Recordset.Fields("編碼0")
End If
End Sub
夠全面了吧
uj5u.com熱心網友回復:
我可以問你一個問題嗎?就是修改這個表的資訊后,我另一個表對應的資訊也變,這個要怎么解決uj5u.com熱心網友回復:
非常簡單,重新重繪另一個表的界面就可以。
uj5u.com熱心網友回復:
哦剛剛理解錯了,在修改的同時修改另一個表的記錄就可以:
Adodc1.RecordSource = "Select * From 銷售表1 Where ID=" & AID & "" '第一個表的修改部分
Adodc1.Refresh
Adodc1.Recordset.Fields("名稱") = Text1(0).Text
Adodc1.Recordset.Fields("型號") = Text1(1).Text
Adodc1.Recordset.Fields("批次") = Text1(2).Text
Adodc1.Recordset.Fields("生產時間") = Text1(3).Text
Adodc1.Recordset.Update '更新第一個表的記錄
Adodc1.RecordSource = "Select * From 銷售表2 Where ID=" & AID & "" '第二個表的修改部分
Adodc1.Refresh
Adodc1.Recordset.Fields("名稱") = Text1(0).Text
Adodc1.Recordset.Fields("型號") = Text1(1).Text
Adodc1.Recordset.Fields("批次") = Text1(2).Text
Adodc1.Recordset.Update '更新第二個表的記錄
MsgBox "祝賀你!這二個表的記錄已經修改!", 64, "修改成功!"
Unload Me
MSH控制元件操作實體.Show
uj5u.com熱心網友回復:
我的資料庫表格的內容很多,我怎么完全的顯示出來呢??????謝謝uj5u.com熱心網友回復:
我的資料庫表格的內容很多,我怎么完全的顯示出來呢??????謝謝
如果內容特別多,可以使用分頁的方法實作。
uj5u.com熱心網友回復:
'一、首先添加一個模塊,寫上以下通用宣告和Sub main():把IP和用戶或密碼服務名換掉,我的模塊是sybase和ORACLEPublic conn1 As ADODB.Connection '通用(宣告)
Public conn2 As ADODB.Connection '通用(宣告)
Public conn3 As ADODB.Connection '通用(宣告)
Dim rs1, rs2, rs3, rs4, rs5, rs6, rs7, rs8, rs9, rs10 As New ADODB.Recordset
Sub gz_akxt()
Set conn1 = New ADODB.Connection
conn1.ConnectionString = "Provider=Sybase.ASEOLEDBProvider.2;Initial Catalog=ssfk;Password=tdhmaster;User ID=sa;Persist Security Info=True;Server Name=IP;Server Port Address=5000;Character Set=iso_1;Language=us_english;Application Name=ssfc;Raise Error Behavior=Warnings Only;Print Statement Behavior=Warnings Only;Connect TimeOut=300;WorkStation ID=ssfk"
'conn.Open
End Sub
Sub gz_akqz()
Set conn3 = New ADODB.Connection
conn3.ConnectionString = "Provider=OraOLEDB.Oracle;Password=spqzsa;User ID=spqz;Data Source=""(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=IP)(PORT=1521)))(CONNECT_DATA=https://bbs.csdn.net/topics/(SERVICE_NAME=SPQZ)))"";Persist Security Info=True"
'conn.Open
End Sub
'二、在表單上拉一個MSHFlexGrid1、一個Text1、Command1,把統計的SQL陳述句放到Text1中(把Text1屬性可以顯示多行)
Private Sub Command1_Click()
call gz_akqz
If Text1.Text <> "" Then
conn1.Open
Set rs30 = conn1.Execute(Text1.Text)
Set MSHFlexGrid1.DataSource = rs30
MSHFlexGrid1.ColWidth(0) = 0
conn1.Close
End If
End Sub
’如果想把SQL放到代碼中就把conn1.Execute(Text1.Text) 的Text1.Text改成"select * from TEST"即可
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/51386.html
