2012-03-25 4 views
0

Ich habe ein Formular erstellt, das mir im Wesentlichen die Befehle aus der vertrauten Northwind-Datenbank zeigt, ich benutze Microsoft SQL Server 2008, Microsoft Access 2007 mit Visual Basic (ADO), also habe ich das Basisformular erstellt, das ungefähr so ​​aussieht :Wie löst man das in Access-Formularen mit Visual Basic SQL Server-Verbindung?

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

Zugegeben ist es in Spanisch und ich bin schrecklich leid, aber hoffentlich wird nicht, dass Ihre Fähigkeit behindern, mir zu helfen, so wie Sie es sehen können, eine große Hauptform ist, und dann ist es ein wenig Form, bestehend aus vier Text-Bars, die natürlich Attribute oder Spalten in einer Datenbank sind, genannt Bestelldetails So wie Sie aus dieser Beziehung sehen können:

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

Sie haben die Tabelle Bestellungen (Pedido) und die Tabelle Reihenfolge Details (Detalle de pedidos), was ich tun möchte ist, wenn ich auf die Haupt >>, die Produkte zeigen entsprechend den Aufträgen, hoffentlich macht das Sinn, wenn ich auf einer Bestellung bin und das Unterformular mit den vier Elementen anklicke, es sollte mir nur die Produkte, den Preis, die Quantität, die Produktkennzeichnung zeigen, entsprechend Bestell-ID im Hauptformular, wenn ich auf die >> oder < < in der Unterform klicken ....

So zum Beispiel sagen, ich habe eine Bestell-ID von 001 und 001 bestellt drei Produkte, Salz, Pfeffer, Huhn. .. es sollte mir nur das in der Unterform zeigen .. Hoffentlich hast du das hier hoffentlich .. bitte

Hier ist meine komplette VB 6 Code ... wieder jede Hilfe sehr geschätzt dank ...

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

+0

Master Detail ist was Sie wollen, viele Beispiele, wie Sie es in Access über auf Google tun –

Antwort

0

ich sehr viel mit ADO in Access und folgerte ich schließlich, dass es experimentiert haben ist nicht die beste Technologie, wenn es um Formulare und Berichte in MS Access geht. Es ist in Ordnung, Datenquellen zu verbinden, auf die nur über ADO zugegriffen werden kann oder bei denen ADO einen erheblichen Vorteil bietet (z. B. Geschwindigkeit). In solchen Fällen müssen Sie jedoch Kompromisse eingehen, bei denen Sie häufig bestimmte Funktionen auslassen müssen schwer, sie zu codieren. Comboboxes, die eine SQL-Anweisung (im Gegensatz zu einer Werteliste) verwenden, sind schwer einzurichten und erfordern das Laden eines separaten Re-Cord-Sets, um sie mit Optionen zu füllen. Ich habe festgestellt, dass die Sortierung nicht immer ordnungsgemäß und zuverlässig funktioniert, insbesondere in den Formularen für die Formularansicht. Kurz gesagt, es ist viel mehr Arbeit und Code, um ADO in Access-Formularen arbeiten zu lassen, es sei denn, Sie halten Ihre Formulare extrem einfach (und das macht sie oft unhandlich).

Was ich empfehle Sie stattdessen tun ODBC verknüpfte Tabellen verwenden. Dazu müssen Sie möglicherweise zuerst einen SQL Server-ODBC-Treiber installieren. Nachdem Sie Ihre verknüpften Tabellen in Access eingerichtet haben, können Sie Access so verwenden, als wären diese Tabellen lokale Tabellen. Sie können gebundene Formulare verwenden (die automatisch DAO verwenden, um auf Daten zuzugreifen), und das Einrichten von Haupt-/Detailformularen ist unter dieser Konfiguration ein Kinderspiel. Sie können sogar die Assistenten verwenden, obwohl ich das nicht unbedingt empfehlen würde.

Wenn Sie darauf bestehen, ADO zu verwenden, empfehle ich Sie zu dem Festlegen des Re-Cord-Sets des Formulars zu dem ADO-Re-Cord-Set. Dies wäre dann eine gebundene Form und würde Sie davon abhalten, Code schreiben zu müssen, um Daten vom Recordset in die Controls und umgekehrt zu verschieben. Hier einige der Code geändert, das zu tun:

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 

Dieser Code wird jedoch nicht Setup der Master/Detail-Beziehung Sie suchen. Es ist immer noch Ihre Aufgabe, dies manuell zu erreichen, indem Sie das richtige Recordset laden, wenn der Benutzer zu einem anderen Datensatz im Hauptformular wechselt. Sie sollten dies im aktuellen Ereignis des Formulars tun können.