Ich muss ein VBA-Array mit den Feldern füllen, die den Kriterien in meiner IF
-Anweisung entsprechen. Ich kann mich nicht darum kümmern, das Array aus dem Recordset zu erstellen, es scheint mir eine völlig andere Welt zu sein als ein "normales" Array. Hier ist, was ich habe:Array aus VBA-Recordset erstellen
Antwort
Sie könnten die folgende Funktion verwenden, um die SQL zu generieren erforderlich zu extrahieren, was Sie wünschen und dann .GetRows()
daraus verwenden. Es verwendet ADO, daher müssen Sie den Verweis auf ADO hinzufügen. Basierend auf den oben Sie diese nutzen, um die INSERT INTO from (function return)
so etwas wie docmd.runsql "INSERT INTO tbl_TEST_Clone " & GEN_SQL_TABLE("tbl_test")
Option Explicit
Function GEN_SQL_TABLE(strTableName As String) As String
Dim r As New ADODB.Recordset
Dim rKeys As New ADODB.Recordset
Set r = CurrentProject.Connection.OpenSchema(adSchemaColumns, _
Array(Empty, Empty, strTableName, Empty))
r.Filter = "[DATA_TYPE]<>" & adWChar
Set rKeys = CurrentProject.Connection.OpenSchema(adSchemaPrimaryKeys, _
Array(Empty, Empty, strTableName))
While Not r.EOF
If Not rKeys.BOF Then rKeys.MoveFirst
rKeys.Filter = "[COLUMN_NAME]='" & r.Fields("COLUMN_NAME").value & "'"
If rKeys.EOF Then
GEN_SQL_TABLE = _
GEN_SQL_TABLE & IIf(Len(GEN_SQL_TABLE) > 0, ",", "") & _
r.Fields("COLUMN_NAME").value
End If
rKeys.Filter=""
r.MoveNext
Wend
GEN_SQL_TABLE = "SELECT " & GEN_SQL_TABLE & " FROM " & strTableName
r.Close
rKeys.Close
Set r = Nothing
Set rKeys = Nothing
End Function
Das sieht so aus eine gute Funktion zu verwenden, aber in diesem Projekt bin ich ziemlich gebunden an DAO und ich glaube nicht, dass Sie sowohl ADO und DAO in einer Datenbank verwenden können. Def speichern in eine Textdatei zum Speichern für später :) –
Sie können beides tun, ich habe Präfix mit dem Klassennamen 'ADODB', sagen Sie Ihre Tabelle hat 100 Felder, alle Nicht-Text, Ihre Methode wird eine Einfügung 100 mal tun pro Zeile. Sehen Sie sich dies an, eine SQL-Operation, egal ob Sie auf DAO runsql oder ADO execute laufen. http://www.w3schools.com/sql/sql_insert_into_select.asp –
Dank den Kommentar Bereitstellung Richtung auf, wo durch @KazimierzJawor zu lenken -> Dies war die Syntax, die ich war in der Lage zu kommen mit dem erreicht, was ich nach war. (Need Fehlerbehandlung hinzufügen, aber dies ist die 1. Lauf durch)
Function Blue()
Dim CreateTableSQL As String
Dim fld As DAO.Field
Set db = CurrentDb()
CreateTableSQL = "CREATE TABLE [GreenSocks] (FieldPK COUNTER CONSTRAINT PrimaryKey PRIMARY KEY, fieldname TEXT);"
db.Execute CreateTableSQL
Set rs2 = db.OpenRecordset("___TestTable")
For Each fld In rs2.Fields
If fld.Name <> "ID" And fld.Name <> "Store Number" Then
If FieldTypeName(fld) <> "Text" Then
Debug.Print fld.Name
strSQL = "INSERT INTO GreenSocks (fieldname) VALUES ('" & fld.Name & "');"
DoCmd.RunSQL strSQL
End If
End If
Next
Set fld = Nothing
rs2.Close
strSQL = "select fieldname from GreenSocks"
Set rs3 = db.OpenRecordset(strSQL)
For Each fld In rs3.Fields
Debug.Print fld.Value
secondSQL = "ALTER TABLE __TestTable ALTER COLUMN [" & fld.Value & "] TEXT(40);"
DoCmd.RunSQL secondSQL
Next
Set fld = Nothing
rs3.Close
End Function
- 1. SQL aus Array erstellen
- 2. Logisches Array aus numpy Array erstellen
- 3. PrivateKey aus Byte-Array erstellen
- 4. Erstellen von Array aus Window.location.hash
- 5. Baum aus js Array erstellen
- 6. Erstellen Sie mpf aus Array
- 7. TensorFlow erstellen Datensatz aus numpy Array
- 8. Erstellen von Zeilen aus Split-Array-Daten
- 9. erstellen mehrdimensionales Array aus langen String PHP
- 10. Autofilter - wie Array erstellen, aus der Variablen
- 11. erstellen neues Objekt aus Array javascript
- 12. JavaScript: Erstellen einer ungeordneten Liste aus Array?
- 13. CSS-Karten aus PHP-Array erstellen?
- 14. Array aus String oder Variable erstellen
- 15. Erstellen Sie ein Array aus Kontrollkästchen
- 16. erstellen variadische Vorlage aus einem constexpr Array
- 17. Erstellen von PHP-Array aus MySQL GROUP_CONCAT
- 18. PHP erstellen Array aus getrimmten url
- 19. Polygon aus Array-Listenpunkten erstellen - Koordinatensequenz?
- 20. Schienen Masse aus Array von Hash erstellen
- 21. Struktur Feldnamen aus Array von Zahlen erstellen
- 22. So erstellen Sie Variablen aus Array-Schlüsseln
- 23. Erstellen von Wörterbuch aus numpy Array
- 24. Javascript - Erstellen von Pyramiden-Array aus Zahlenwerten
- 25. Erstellen Sie dynamische Variablen aus einem Array
- 26. ServiceNow: Tabelle dynamisch aus dem Array erstellen
- 27. Wie schnell Array aus großer Datei erstellen?
- 28. ElementArrayFinder aus einem Array von ElementFinders erstellen
- 29. VB: Komma getrennte Zeichenfolge aus Array erstellen
- 30. Array von Daten aus Laravel Sammlung erstellen
zu bewegen von Cord-Array erzeugen Sie einfache Methode verwenden: 'rs2.GetRows()'. Zuerst müssen Sie jedoch die korrekten Recordset-Ergebnisse basierend auf der SQL-Abfrage erstellen, bei der Sie das Feld "ID-Feld" und andere Elemente des Typs "Text" ausschließen können. –
@KazimierzJawar - so ist es noch größer als das, was ich anfangs dachte. Danke für das Posten, um mir einen Startpunkt für Google zu erlauben :) –
Eine wirklich * frische * Antwort hier: http://stackoverflow.com/questions/41485788/dynamically-populate-vba-array/41486069#41486069 –