2012-03-25 42 views
0

我創建了一個基本向我展示熟悉的Northwind數據庫的訂單的表單,我使用的是Microsoft SQL Server 2008,帶有Visual Basic(ADO)的Microsoft Access 2007,所以我創建了基本表單,這幾乎看起來像這樣:如何使用Visual Basic SQL Server連接在Access窗體中解決此問題?

http://www.flickr.com/photos/[email protected]/7014481001/in/photostream/

授予它是在西班牙,我很可怕的抱歉,但希望這不會妨礙你幫我出的能力,因此,大家可以看到有一個大的主窗體,然後有一點點表格由四個文本欄組成,當然這些文本欄是數據庫中的屬性或列,稱爲訂單明細。正如您從這種關係中可以看出的那樣:

flickr.com/photos/[email protected]/6868373952/in/photostream/

你有表訂單(Pedido)和表順序細節(Detalle de pedidos),我想要做的是當我點擊主要>>,產品相應地顯示在訂單上,希望這在我訂單時有意義並且點擊具有四個要素的子表單時,它應該只顯示產品,價格,數量,產品ID,根據當我點擊>>或< <子表格中的訂單ID ...

因此,要舉例說明我有一個訂單ID爲001和001訂購三種產品,鹽,胡椒粉,雞肉。 ..它應該只顯示我在子表格..希望你有這個我希望..請

這裏是我完整的VB 6代碼...再次任何幫助十分讚賞感謝...

https://docs.google.com/document/d/1bn71VqxzB1W55sHcKMstCSxnIbmP5cyYWkBVnF1tzVs/edit

+0

主細節是你想要的,加載如何在Access中關於谷歌 – 2012-03-25 17:25:11

回答

0

我已經嘗試了很多與ADO訪問中,我終於得出結論,在MS Access中使用窗體和報表時不是最好的技術。連接到只能通過ADO訪問的數據源或使用ADO具有顯着優勢(例如速度)的連接是可以的,但在這些情況下,您必須作出妥協,這往往要求您省略某些功能或非常工作很難對它們進行編碼。使用SQL語句(而不是數值列表)的組合框很難設置,並且需要您加載單獨的記錄集才能填充選項。我發現排序並不總是正確可靠地工作,特別是在數據表視圖表單中。簡而言之,除非您的表單保持非常簡單(並且經常會讓他們笨拙地使用),否則使用ADO工作在Access表單中的工作和代碼會多得多。

我建議你改用ODBC鏈接表。這可能需要您先安裝SQL Server ODBC驅動程序。在Access中設置了鏈接表後,可以使用Access,就像這些表是本地表一樣。您可以使用綁定表單(自動使用DAO訪問數據),並在此配置下輕鬆設置主/明細表單。你甚至可以使用嚮導,雖然我不一定會推薦。

如果堅持使用ADO,我建議您嘗試將表單的記錄集設置爲ADO記錄集。這將成爲一種綁定形式,並且不需要編寫代碼將數據從記錄集移動到控件中,反之亦然。這裏有一些修改後的代碼可以這樣做:

Private Sub Form_Load() 

    Set con = Nothing 
    Set rs = Nothing 
    Set rs2 = Nothing 

    Set con = New ADODB.Connection 
    Set rs = New ADODB.Recordset 
    Set rs2 = New ADODB.Recordset 

    con.ConnectionString = "Provider=SQLNCLI10.1;User ID=sa0378;password=123;Initial Catalog=Northwind;Data Source=(local);" 
    con.Open 


    rs.Open "SELECT Orders.OrderID, Orders.ShipCountry," & _ 
     "Orders.EmployeeID, Orders.CustomerID, Orders.ShipCity," & _ 
     "Orders.ShipAddress, Orders.ShipPostalCode, Orders.Freight, Orders.OrderDate," & _ 
     "Orders.RequiredDate, Orders.ShippedDate FROM Orders", con, _ 
     adOpenDynamic, adLockOptimistic 

    Set Me.Recordset = rs 

End Sub 

但是,這段代碼不會設置您要查找的主/明細關係。在用戶更改主窗體上的其他記錄時,通過加載正確的記錄集來手動完成此操作仍然是您的工作。您應該能夠在表單的當前事件中執行此操作。