返回列表 上一主題 發帖

如何用VB6連結ACCESS資料庫查詢,新增,刪除,修改呢?

如何用VB6連結ACCESS資料庫查詢,新增,刪除,修改呢?

只要搜尋一個欄位,如下圖


我的欄位如下圖(access資料皆由excel表格匯入)


但我希望在撰寫的時候能夠告訴我如何變通
例如:身分證字號是在第5欄,
如果改天我的身分證字號在第二欄的時候又該如何改寫.
關於資料第三欄的附件必須做超連結.(我當時在excel就有做好,可惜不會連結附件)
-----------------------------------可愛的分隔線--------------------------------------------

一般聯結資料庫只有顯示資料,並沒有新增刪除修改的功能,
我希望能夠依照權限獲得新增刪除修改的功能



備註:如果分隔線以下的新增,刪除,修改做不出來可以暫時放棄.

本帖最後由 vpower 於 2010-11-13 17:02 編輯

請問黑暗大大是把Excel當作VB的資料庫嗎?

再次感謝,看來我真的該加油了,我完全看不懂

我先來去下載VB2008好了,感恩

TOP

再補充一下  連結AccEss 的參數

資料庫路徑 = "Z:\部門\製造中心\品質管理部\QM資料庫\FQCDataBase.mdb"
  mApp = "FQC"
  mApp1 = "檢驗日期,檢驗時間,週別,班別,檢驗人員,工單號碼,廠商名稱,產品編號,品名,規格,RUN卡,大標,內標,小標,Hi-Pot,瓦數,檢驗結果,異常類別,異常位置,異常編碼,不良項目,不良原因,處理方式,備註"


mapp  是 table 的名稱
mapp1  是 table  的欄位名稱(不是欄位數喔)
是學程式而不是要程式,是進步的基礎

TOP

另外  這邊板上有個舊資料查詢   那裡是舊論壇 有很多資料  你可以去看看
另  你可以試用  vb2008  下去寫,會比  vb6還好寫的多了
是學程式而不是要程式,是進步的基礎

TOP

類別
clsADODBopenAcs
Option Explicit


Dim theCON As ADODB.Connection
Public theRST As ADODB.Recordset

Sub subConn(strFullName As String)
Dim strDrv As String

    strDrv = "Data Source=" & strFullName & ";"
    theCON.Open "rovider=Microsoft.Jet.OLEDB.4.0;" & strDrv & "Jet OLEDBatabase Password=zxcvbnm,./;"
   
   
   
    '其密碼參數如何設定
'theCON.Open "rovider=Microsoft.Jet.OLEDB.4.0;" & strDrv & "Jet OLEDBatabase Password=yourpassword;"
   
End Sub

Sub subOpen(strCMn As String)
    theRST.Open Source:=strCMn, ActiveConnection:=theCON, _
                CursorType:=adOpenStatic, LockType:=adLockPessimistic, Options:=adCmdText
End Sub

Private Sub Class_Initialize()
    Set theCON = New ADODB.Connection
    Set theRST = New ADODB.Recordset
End Sub

Private Sub Class_Terminate()
    theCON.Close
    Set theRST = Nothing
    Set theCON = Nothing
End Sub


這是access 的ado 連線類別,結合上一段,就可載出資料
是學程式而不是要程式,是進步的基礎

TOP

個人建議不要用  adodb 那個東西,我之前用過不很好用,雖然它某些方面很方便但彈性不足

ado的資料  板上excel 程式區就有,上文我有提過  excel可以看成資料庫,用法一樣  只是下的參數變動而已
如   http://forum.twbts.com/thread-556-1-1.html

裡面就有我po的ado  連線

Dim theCON As ADODB.Connection
Public theRST As ADODB.Recordset

Sub subConn(strFullName As String)
  Dim strDrv As String
  Dim IQC_SQLPass$, IQC_SQLID$, IQC_SQLName$, IQC_SQLAdderss$
   (上面是連結資料庫的相關資訊 如 資料庫密碼  資料庫表單   資料庫名稱   資料庫位址)  


  IQC_SQLPass = "yyyyy"
  IQC_SQLID = "yy"
  IQC_SQLName = "Spc-Iqc"
  IQC_SQLAdderss = "192-168-100-199\SQLEXPRESS"
   
    theCON.Open "rovider=SQLOLEDB.1assword=" & IQC_SQLPass & "ersist Security Info=True;User ID=" & IQC_SQLID & ";Initial Catalog=" & IQC_SQLName & ";Data Source=" & IQC_SQLAdderss
   
End Sub

Provider=SQLOLEDB.1(這個改成access的連線參數)   

這樣就完成  資料庫的連線了,再來就是跟資料庫說,我們要什麼了
  1. Function 連結AccEss(資料庫路徑 As String, mApp As String, mApp1 As String, 欄位數%)

  2. Dim strCMn As String
  3. Dim Ia%, Ib%
  4. Dim DArr(), Darr1
  5.   Set myDbAcs = New clsADODBopenAcs         '起始一個新的連結
  6.   strCMn = "select * from " & mApp    '這裡給于SQL敘述
  7.     With myDbAcs
  8.        .subConn 資料庫路徑   '連結資料庫檔案名稱(全路徑)
  9.        .subOpen strCMn        ' 以給于的SQL敘述打開一個資料集.
  10.     End With
  11.    
  12.     ReDim DArr(1 To myDbAcs.theRST.RecordCount, 1 To 欄位數)
  13.     Darr1 = Split(mApp1, ",", -1)
  14.       
  15.     For Ia = 1 To myDbAcs.theRST.RecordCount    '讀取資料
  16.       For Ib = 1 To 欄位數

  17.         DArr(Ia, Ib) = myDbAcs.theRST("" & Darr1(Ib - 1) & "").Value

  18.        ' myDbAcs.theRST.MoveNext
  19.       Next Ib
  20.       If Ia > 0 Then
  21.         myDbAcs.theRST.MoveNext
  22.       End If
  23.     Next Ia
  24.    
  25.    連結AccEss = DArr
  26.   
  27.    Set myDbAcs = Nothing   '釋放連結物件
  28. End Function
複製代碼
是學程式而不是要程式,是進步的基礎

TOP

我搜尋了有關VB連結ACCESS資料庫的資料
VB可以和Access做連結,但有幾個步驟要設定,如下:

一.開啟新表單,在功能表列"專案"→"設定使用元件"→選Micorsoft ADO Data Control6.0(OLEDB),將ADODC1的物件放入表單上。

二.在ADODC1的物件上,按滑鼠右鍵,選ADODC的屬性,然後會出現一個屬性頁的視窗。在屬性頁視窗的"一般"項目裡,點選"使用連線字串",然後按右方的"建立"鈕後,會在出現一個資料連結內容的視窗。

三.資料連結內容視窗的"提供者"項目裡,選取"Microsoft Jet 4.0 OLE DB Provider",按"下一步",資料連結內容視窗會切換到"連線"項目裡,然後在"1.選擇或輸入資料庫名稱"下方空白處輸入要連結的Access檔案名稱及路徑,也可直接按右方的"..."鍵去加入檔案,檔案加入後按下方"測試連線"鈕,如果出現測試連線成功的視窗,就表示VB和Access的檔案已經連結了,按"確定"鈕回到屬性頁的視窗。

四.在屬性頁視窗的"資料錄來源"項目裡,命令類型請選擇"2-adCmd Table",資料表或預存程序的名稱請選擇你Access檔案內的資料表名稱(通常只會有一個而已,Access的內定檔名是"資料表1",除非你的Access有做二個資料表)按"確定"鈕。

五.在表單上放入Text1,Text2,Text3物件,將這三個物件的屬性DataSource選擇"Adodc1",然後再將Text1的屬性DataField選擇"學號",Text2的屬性DataField選擇"國文",Text3的屬性DataField選擇"數學"。

六.執行程式,Access的資料就會顯示在Text上了。

PS:Access資料表的欄位名稱無法讀進Text裡,你要自己用Label去標示。

以上這個對我要完成的資料是否有用呢?

TOP

本帖最後由 vpower 於 2010-11-13 11:15 編輯

真的非常感謝兩位大大,我先去看ado的用法好了,希望可以在星期一以前完成.

暗黑大大您好
是否可以提供幾個網站呢?我找了好久都沒有ado從頭到尾操作的解說.

et5323 大大您好
想請教您一下"使用方法
1.在Personal_ID:右方輸入H
2.按下LookUp
3.他會顯示錯誤,如下
    adoRecordset.Open sSQL, adoConnection, 1, 1
這是什麼意思呢?
ShowDoc是否開始該筆資料的超連結呢?

TOP

附件是一个最基本的VB6.0做前台界面,通过ADO连接后台Access数据库的单机版桌面系统,只是完成了查询功能。若你对ADO和SQL不熟悉的话,你所要求的其它新增,刪除,修改功能你是做不出来的。
由于系统字体的缘故,代码未作解释,写了你打开也是乱码。
vb6.rar (31.4 KB)

TOP

其實不會很複雜,一個功能一個功能折開來想就好了
另外...我寫的是架構只要依架構下去,就一定做的出來

資料庫  <<>>  ado連線  <<>>  sql  語法    就可以達成欄位名  或  欄位數
(excel也可以看成是資料庫),你可以去看一下  ado 的用法,板上有

登入
你應該先建立一個table(資料庫),記錄  user  password   add  del  updata
                                                       001      1234         y      n      y
這樣的方式  我在 登入 form 時  使用者輸入  帳密  按下  確定時,
   用ado  連線  找出   user,然後回傳  比對passwod,  ok時  帶入權限

將  add  del  updata  用  陣列記錄起來,  form1    在  load  時,判定  add = y 時
新增鈕.enabled=true      刪除鈕.enabled=false
這樣就可依使用者,去決定使用的功能

當然  寫法真的有很多種,我列出的只是很簡單的一種,網上真的有很多資料
另  要對資料庫應用  真的要會  連線方式 , ado 是一種常用的用法  ,建議去找一下相關資料,不會ado  資料庫存取功能,個人覺的會少一半

另  sql 語法  配合ado   才能下妳要的條件,也就是說,ado  是  vb  跟 資料庫的橋樑   sql   是你的需求
所以  ado  跟sql   是不可少的

超連結的部份,   當你把查詢值  回傳回來後, 再對  特定的欄位,去指定為超連結(或用超連結元件)

所以  當  執行完  以上的程式段  使用者看到的  就是完整的功能了

你可以試試看再問  你遇到的問題,要不然這樣整篇說,真的會寫很多很久,我只好大慨的說一下
另  建議 你先看一下  ado   別人的用法  (裡面會有sql的用法,不懂再問)
試試吧
是學程式而不是要程式,是進步的基礎

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題