Führen Sie eine mySQL-Abfrage mit einem Parameter aus Excel aus - mehrere Zeilen

444
DarrenMcGettigan

Ich konnte diesen Link für mein Projekt anpassen, suche aber nach einer Möglichkeit, für mehrere Zeilen zu duplizieren. Hier ist meine Frage:

SELECT data_0.InvoiceNumber,  data_0.CustomerNumber,  data_0.CustomerName,  data_0.Address,  data_0.City,  data_0.State,  data_0.Zip,  data_0.Zone,  data_0.PartNumber,  data_0.PartDescription FROM bitnami_wordpress.data data_0 WHERE (data_0.InvoiceNumber=?) 

Der invoicenumberist der Parameter und der ist mit gefüllt=Sheet2!$A$4

Idealerweise würde ich meine Parameter in Spalte A und Spalten B eingeben: K: Die Daten werden aus der Datenbank gefüllt. Gibt es eine Möglichkeit, dies zu tun, ohne für jede einzelne Zeile eine Abfrage zu erstellen, fast wie "Fill Down"?

0
Ihrem Befehl sollte Folgendes gefallen ,,, `" SELECT name FROM Benutzer ** WHERE data.Invno = "& Arbeitsblätter (" Tabelle2 "). Bereich (" A4 "). Wert` **. Rajesh S vor 5 Jahren 1
* Gibt es eine Möglichkeit, dies zu tun, ohne eine Abfrage für jede einzelne Zeile einzurichten? * Natürlich. Erstellen Sie ein VBA-Makro als Publuc-Funktion, die ein zweidimensionales Array zurückgibt. Beziehen Sie Daten von MySQL und kopieren Sie sie vom Recordset in das Ausgabearray. Ordnen Sie diese Funktion als Array-Funktion einem Zielbereich zu. PS. Ich empfehle nicht, diese Funktion als flüchtig zu definieren ... Akina vor 5 Jahren 0
@Akina, da ich deinen Kommentar direkt unter mir gefunden habe, dachte ich, du würdest mich ansprechen und ich habe die Kommentare gepostet! Wenn nicht, dann lösche ich es einfach. !! ☺ Rajesh S vor 5 Jahren 0
@Akina kannst du etwas ausarbeiten, ich bin mit VBA und mySQL sehr unerfahren, danke! DarrenMcGettigan vor 5 Jahren 0

1 Antwort auf die Frage

0
Akina

Kannst du etwas näher erläutern, ich bin mit VBA und MySQL sehr unerfahren, danke!

So erstellen Sie eine Array-Funktion

Neue Arbeitsmappe erstellen Öffnen Sie den VBA-Editor. Einfügen - Modul. Kopieren Sie den folgenden Code hinein:

Option Base 0  Public Function ReturnArray(Optional val As Integer = 1) As Variant() ' Application.Volatile Dim tmp() ReDim tmp(1, 1) tmp(0, 0) = val tmp(0, 1) = val + 1 tmp(1, 0) = val + 2 tmp(1, 1) = val + 3 ReturnArray = tmp End Function 

Wählen Sie in einem Arbeitsblatt A1: B2 aus. Fügen Sie die folgende Formel in ein Formelfeld ein:

=ReturnArray() 

oder

=ReturnArray(1) 

oder

=ReturnArray(C1) 

Beenden Sie die Eingabe einer Formel mit Strg-Eingabetaste, um anzuzeigen, dass es sich um eine Array-Formel handelt. Der Zielbereich wird mit berechneten Werten gefüllt.

Wenn Sie Werte neu berechnen müssen, weil der Quellwert (C1-Zelle in letzter Formel) geändert wurde, müssen Sie dies manuell tun, indem Sie F9 drücken.

Sie können die automatische Berechnung durch Auskommentieren erzwingen. Beachten Application.VolatileSie jedoch, dass bei jeder Änderung des Arbeitsblatts eine Neuberechnung ausgelöst wird. Wenn Ihr Code eine Verbindung zu einem externen Server herstellt, kann dies extrem teuer sein.

Die Kommunikation mit dem MySQL-Server unterscheidet sich nicht von der Kommunikation mit einem anderen DB-Server. Installieren Sie den richtigen MySQL-Connector, erstellen Sie eine korrekte Datenquelle und verwenden Sie ADODB, um die benötigten Daten zu erhalten / zu bearbeiten. Dieser Prozess ist in MSDN gut dokumentiert.