Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Insert vs. DAO / ADO
zurück: Einzelne Zellen aus Excel importieren weiter: von access aus alle mappen eines excels in liste zeigen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
wm_andi
Einsteiger


Verfasst am:
11. Dez 2008, 12:16
Rufname:
Wohnort: Berlin

Insert vs. DAO / ADO - Insert vs. DAO / ADO

Nach oben
       Version: Office 2003

Hallo,

ich möchte 36 Tabellen a´ 25000 Datensätze in eine Tabelle zusammenfügen. Hat jemand Erfahrung welche Methode am effizientesten ist. Ich habe bereits eine Insert-Abfrage durchlaufen lassen, die Bearbeitungszeit war leider etwas zu lang. Ich habe überlegt ein recordset einzusetzen. Ist diese Methode performanter? Dann wollte ich auch mal ein Batchupdate mit einem ADO-Recordset ausprobieren, hat denn jemand hierzu schon Erfahrungen gesammelt?

Viele Grüße

Andi
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
11. Dez 2008, 12:43
Rufname:
Wohnort: Hannover


AW: Insert vs. DAO / ADO - AW: Insert vs. DAO / ADO

Nach oben
       Version: Office 2003

Hi,

vergiss ADO, in Verbindung mit der JET Engine (Access MDB) ist es langsamer als DAO.

Die Insertabfragen sind die bereits die schnellste Option, zumal die in einer impliziten Transaktion laufen. Recordsets ackern ja Zeile für Zeile durch.

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
wm_andi
Einsteiger


Verfasst am:
11. Dez 2008, 12:54
Rufname:
Wohnort: Berlin

AW: Insert vs. DAO / ADO - AW: Insert vs. DAO / ADO

Nach oben
       Version: Office 2003

Hi,

was jedoch erstaunlich ist, ist die Tatsache, dass wenn ich den Tabelleninhalt per Hand kopiere die Berarbeitungszeit am kürzesten ist. Nun wollte ich genau diese Tatsache nutzen und das irgendwie nachbilden, deshalb der Versuch mit dem Batch-Update.

Viele Grüße

Andi
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
11. Dez 2008, 13:52
Rufname:
Wohnort: Hannover

AW: Insert vs. DAO / ADO - AW: Insert vs. DAO / ADO

Nach oben
       Version: Office 2003

Hi,

zeigt mal den bisherigen Code, den Du benutzt. Eventuell kann eine explizite Transaktion per
Code:
    DbEngine().Begintrans
    Currentdb.Execute "INSERT tralala"
    DbEngine().CommitTrans
das noch ein wenig beschleunigen.
_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
wm_andi
Einsteiger


Verfasst am:
11. Dez 2008, 15:04
Rufname:
Wohnort: Berlin


AW: Insert vs. DAO / ADO - AW: Insert vs. DAO / ADO

Nach oben
       Version: Office 2003

Also

Versuch 1:
Code:
Sub prcInsertIntoProvision()
    Dim strSQL AS String
   
    For Each tdfLoop In CurrentDb().TableDefs
        If Left(tdfLoop.Name, 3) = "ESP" Then
            strmonat = Right(tdfLoop.Name, 2)
            stryear = Left(Right(tdfLoop.Name, 6), 4)
            strSQL = "INSERT INTO Provision_Data " & _
                     "SELECT * FROM " & tdfLoop.Name & ";"
            DoCmd.RunSQL strSQL
        End If
    Next tdfLoop
    MsgBox "Insert done!"
End Sub
Versuch 2:
Code:
Sub insertRecordset()
    Dim rsPortfolioData As DAO.Recordset
    Dim rsESPTables As DAO.Recordset
   
    Set rsPortfolioData = CurrentDb.OpenRecordset("Portfolio_Data", _
                                                  dbOpenTable)
    For Each tdfLoop In CurrentDb().TableDefs
        If Left(tdfLoop.Name, 3) = "ESP" Then
            Set rsESPTables = CurrentDb.OpenRecordset(tdfLoop.Name, _
                                                      dbOpenTable)
            rsESPTables.MoveFirst
            Do Until rsESPTables.EOF
                With rsPortfolioData
                    .AddNew
                    ![Financial Product Code] = _
                                               rsESPTables![Financial Product]
                    ![Contract Number Code] = rsESPTables![Contract Number]
                    ![Financed Capital] = rsESPTables![Financed Capital]
                    ![Outstanding Capital] = rsESPTables![Outstanding Capital]
                    ![Unpaid Capital] = rsESPTables![Unpaid Capital]
                    ![Unpaid Interests] = rsESPTables![Unpaid Interests]
                    ![Unpaid Vat] = rsESPTables![Unpaid Vat]
                    ![Age Of Arrears] = rsESPTables![Age Of Arrears]
                    ![Legal Provision] = rsESPTables![Legal Provision]
                    ![Date Activated] = rsESPTables![Date Activated]
                    ![Status Code] = rsESPTables![Status Code]
                    ![Bp External Id] = rsESPTables![Bp External Id]
                    ![zeitscheibe] = rsESPTables![zeitscheibe]
                    .Update
                End With
                rsESPTables.MoveNext
            Loop
            Set rsESPTables = Nothing
        End If
    Next tdfLoop
    Set rsPortfolioData = Nothing
End Sub
Willi Wipp
Moderator


Verfasst am:
12. Dez 2008, 06:24
Rufname:
Wohnort: Raum Wiesbaden

Re: Insert vs. DAO / ADO - Re: Insert vs. DAO / ADO

Nach oben
       Version: Office 2003

Hi wm_andi,

ersetzte in jedem Fall mal
Code:
            DoCmd.RunSQL strSQL
' durch
            CurrentDb.Execute strSQL, 128 'dbFailOnError

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
wm_andi
Einsteiger


Verfasst am:
12. Dez 2008, 11:46
Rufname:
Wohnort: Berlin

AW: Insert vs. DAO / ADO - AW: Insert vs. DAO / ADO

Nach oben
       Version: Office 2003

Hi,

danke für die Antwort. Wo genau liegt denn der Unterschied zwischen beiden Methoden?

Ich hatte schon einmal die Currentdb-Methode probiert, danach ist mir der Rechner abgestürzt.

mfg Andi
Willi Wipp
Moderator


Verfasst am:
13. Dez 2008, 03:20
Rufname:
Wohnort: Raum Wiesbaden

Re: Insert vs. DAO / ADO (II) - Re: Insert vs. DAO / ADO (II)

Nach oben
       Version: Office 2003

Hi wm_andi,

was mit DoCmd.RunSQL funktioniert sollte auch mit CurrentDb.Execute funktionieren Wink
MS hat folgendes geschrieben:
Die RunSQL-Methode führt die AusführenSQL-Aktion in Visual Basic aus.
Die (Objekt.)Execute-Methode führt eine Aktionsabfrage oder eine SQL-Anweisung auf einem angegebenen Connection- oder Database-Objekt aus
Die Execute-Methode ist daher schneller und kann ueber Parameter gesteuert werden.
Zusaetzlich kann man danach weitere Eigenschaften (z.B. RecordsAffected) des Objektes auswerten.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
wm_andi
Einsteiger


Verfasst am:
15. Dez 2008, 11:32
Rufname:
Wohnort: Berlin


AW: Insert vs. DAO / ADO - AW: Insert vs. DAO / ADO

Nach oben
       Version: Office 2003

Hi,

danke für das Feedback. Ich habe jetzt ein wenig herumexperimentiert und die CurrentDB-Methode scheint tatsächlich schneller zu laufen.

Viele Grüße

Andi
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: fehler in insert into anweisung 3134? 4 ptuser 491 29. Okt 2010, 10:06
ptuser fehler in insert into anweisung 3134?
Keine neuen Beiträge Access Tabellen & Abfragen: INSERT mit NULL-Werten 18 dpik 3783 26. Okt 2010, 14:48
Gast INSERT mit NULL-Werten
Keine neuen Beiträge Access Tabellen & Abfragen: INSERT INTO Excel zu Access 1 Compie 1534 16. Sep 2010, 11:44
Gast INSERT INTO Excel zu Access
Keine neuen Beiträge Access Tabellen & Abfragen: insert + select + where bedingung 18 strolli 1245 09. Jul 2010, 14:15
strolli insert + select + where bedingung
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage funktioniert nicht, Aggregatfunktion, Insert 8 Gast 2934 17. März 2010, 19:23
Gast Abfrage funktioniert nicht, Aggregatfunktion, Insert
Keine neuen Beiträge Access Tabellen & Abfragen: Insert von NULL werten 4 wm_andi 307 06. Apr 2009, 17:36
wm_andi Insert von NULL werten
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle 1 insert into Tabelle 2 mit Primarykey in selber db 1 BenneB 2012 16. Dez 2008, 00:44
Willi Wipp Tabelle 1 insert into Tabelle 2 mit Primarykey in selber db
Keine neuen Beiträge Access Tabellen & Abfragen: Hyperlink funktioniert nach SQL INSERT nicht 3 Wu 814 29. Okt 2008, 21:03
jens05 Hyperlink funktioniert nach SQL INSERT nicht
Keine neuen Beiträge Access Tabellen & Abfragen: Wo baue ich bei einem Insert Befehl die Where Bedingung ein? 5 Steffen29 502 07. Dez 2007, 15:05
Willi Wipp Wo baue ich bei einem Insert Befehl die Where Bedingung ein?
Keine neuen Beiträge Access Tabellen & Abfragen: Insert+replace funktion ueber Nummernfeld 1 galaxy 599 19. Sep 2007, 10:30
SGast Insert+replace funktion ueber Nummernfeld
Keine neuen Beiträge Access Tabellen & Abfragen: ZU viele Felder definiert - erst bei INSERT 2 waldwuffel 1619 28. Aug 2007, 21:41
waldwuffel ZU viele Felder definiert - erst bei INSERT
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle per INSERT INTO m. Werten o. Quelltabelle erweitern? 6 Zamp 801 25. Jun 2007, 19:13
Zamp Tabelle per INSERT INTO m. Werten o. Quelltabelle erweitern?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Access Tabellen