collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 45
  • Punkt Versteckte: 2
  • Punkt Mitglieder: 3
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13993
  • stats Beiträge insgesamt: 66758
  • stats Themen insgesamt: 9001
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Eine weitere Access-Datei öffnen wenn...  (Gelesen 2128 mal)

Offline Torsten.

  • Access-Profi
  • **
  • Beiträge: 155
Eine weitere Access-Datei öffnen wenn...
« am: Februar 22, 2018, 09:13:39 »
Hallo zusammen,
folgende Situation:
Auf dem Rechner habe ich eine Access-Datei (DB1) geöffnet in der per Anfügeabfrage in Verbindung mit einer Funktion Daten generiert werden.
Dieser Vorgang dauert tlw. bis zu 36 Std.
Mein Problem ist, dass ich währendessen keine weitere Access-Datei (DB2, DB3...) öffnen kann,
praktisch ist Access in der Zeit nicht nutzbar.
Zu öffnen versuche ich über den Explorer und dann die db2.accdb zu klicken - nichts passiert.
Gibt es eine Möglichkeit irgendwie weitere Dateien zu öffnen?

Hat jemand eine Idee oder geht das techn. garnicht.

Gruß Torsten.
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23363
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #1 am: Februar 22, 2018, 09:40:56 »
Hallo,


36 Std??

Was für einen Rechner hast Du denn?    ;)

Ernsthaft:  Ich würde mal an der Performance der Datengenerierung arbeiten und die Indizierungsverhältnisse in den beteiligten Tabellen prüfen.

Zeige mal die Prozedur und den SQL-String der Anfügeabfrage.


Eine andere DB kann vermutlich mit einer weiteren Access-Instanz geöffnet werden. D. h.,  die andere DB mit  Doppelklick darauf öffnen und nicht die "blockierte" Instanz zum Öffnen benutzen.





Offline Torsten.

  • Access-Profi
  • **
  • Beiträge: 155
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #2 am: Februar 22, 2018, 10:46:22 »
Moin Franz,
neue Instanz hat funktioniert.

Das mit dem Zeitfaktor sehe ich auch als ein Problem, der Rechner ist ok.
Ich gehe davon aus, dass es an der Menge der Datensätze liegt - um die 800Tsd.

Gruß Torsten
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7313
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #3 am: Februar 22, 2018, 10:54:10 »
Hallo,
Zitat
um die 800Tsd.
Bei korrektem, normalisiertem Aufbau der Datenbank mit sinnvollen Indizierungen sind 800Tsd kein Problem.
Auch dann sollte die Verarbeitung im Sekundenbereich liegen.

Was wird denn in der Abfrage mit Funktionen gemacht ?
Gruß
Klaus
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 900
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #4 am: Februar 22, 2018, 11:31:10 »
Zitat
Ich gehe davon aus, dass es an der Menge der Datensätze liegt
Ja. Wenn es nur 30 Datensätze wären, würde es sicher anders aussehen, da überspielt die Kraft der Maschine jede eigenverursachte Ungeschicklichkeit.
Zur Performance bei richtigen Datenmengen muss dann etwas Entwicklerintelligenz hinzugefügt werden.

36 Stunden sind unakzeptabel. Womöglich läuft das nicht einmal im Rahmen einer Transaktion ab, was dann bei einem unerwarteten Abbruch die Integrität der Daten in Frage stellt.
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: Torsten.

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1811
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #5 am: Februar 22, 2018, 13:00:14 »
Hallo,
Vermutlich werden die DS einzeln angefügt, und da werden nach jedem DS
die Indices neu einsortiert. Das fängt dann nach ein paar 10k DS an immer
langsamer zu werden. Und wenn's dann noch mehrere Indices gibt, - gute Nacht.  ;)
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Torsten.

Offline Torsten.

  • Access-Profi
  • **
  • Beiträge: 155
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #6 am: Februar 22, 2018, 13:11:34 »
@Beaker
Ja gut möglich, was ich leider nicht beurteilen kann...

Ich habe hier nochmal meine Demo_db angehängt, da ist Struktur auf wenige Testdaten runtergebrochen.
In der Tabelle "tbl" sind in echt die ca. 840Tsd DS enthalten.
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 900
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #7 am: Februar 22, 2018, 13:43:12 »
Ja, die gute alte SQLListe: Sie tut, was sie soll, aber auf Performance ist sie nicht getrimmt. Sie enthält systematische Fehler (Neuinstanzierung CurrentDb pro Aufruf, Textzusammensetzung per VBA), die sich in benötigte Zeit umsetzen und bei genügender Wiederholung dann zeitlich anstrengend sind.

Alternative:
Public Function ADOConcatColumn(ByVal strSQL As String, _
                                Optional ByVal strSeparator As String = ", ") _
                                As Variant

   Const adOpenForwardOnly = 0
   Const adCmdText = 1
   Const adLockReadOnly = 1
   Const adUseClient = 3


   Static rs As Object   'ADODB.Recordset nur 1x erstellen

   On Error GoTo x

   If rs Is Nothing Then
      Set rs = CreateObject("ADODB.Recordset")
      rs.ActiveConnection = CurrentProject.Connection
      rs.CursorLocation = adUseClient
   End If

   rs.Open strSQL, , adOpenForwardOnly, adLockReadOnly, adCmdText

   If Not (rs.EOF And rs.BOF) Then
      ADOConcatColumn = rs.GetString(, , , strSeparator)
      ADOConcatColumn = Left$(ADOConcatColumn, Len(ADOConcatColumn) - Len(strSeparator))
   End If

   rs.Close
   Exit Function

x:
   ADOConcatColumn = CVErr(6001)
End Function

Die Abfrage dann:
SELECT DISTINCT
   T.gruppe,
   ADOConcatColumn("SELECT beschr_wert FROM tbl WHERE gruppe = '" & T.gruppe & "' ORDER BY sortnr", ";") AS liste
FROM
   tbl AS T

Zusätzlich sollte auf sortnr ein Index gesetzt werden.


// Nachtrag:
Ich bin mir nicht sicher, ob in der gezeigten Abfrage zuerst gruppiert wird und erst danach mit der verringerten Zeilenanzahl die Textzusammensetzung erfolgt, oder ob erst Textzusammensetzung und dann Gruppierung erfolgt. Der erste Fall wäre zu bevorzugen, und sicherheitshalber könnte man die Abfrage  so formulieren:
SELECT
   T.gruppe,
   ADOConcatColumn("SELECT beschr_wert FROM tbl WHERE gruppe = '" & T.gruppe & "' ORDER BY sortnr", ";") AS liste
FROM
   (
      SELECT DISTINCT
         gruppe
      FROM
         tbl
   ) AS T
« Letzte Änderung: Februar 22, 2018, 15:45:15 von ebs17 »
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: Torsten.

Offline Torsten.

  • Access-Profi
  • **
  • Beiträge: 155
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #8 am: Februar 22, 2018, 16:21:41 »
Hallo Eberhard,
ich habe testweise 160Tsd DS in die Tabelle "tbl" importiert und Feld "sortnr" indiziert.
Habe soeben nach 2 Std. abgebrochen, da die Anzeige unten rechts unter "Abfrage ausführen" bei ca. 1/5 Stand.
Gefühlt ist es schneller als mit dem alten Code, aber hast Du da noch einen Ansatz wie es schneller geht?

Gruß Torsten
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 900
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #9 am: Februar 22, 2018, 17:31:37 »
Das Arbeiten an einer Lösung ist doch erst der dritte Schritt.
Vorher sollte man einen Überblick haben,
- warum das stattfindet,
- wo die Daten herkommen,
- wo (welches Backend) das stattfindet,
- wie oft das stattfindet (über alle 800k Datensätze),
- wieviel Beschreibungen maximal zu verketten wären
?

Ein Weg leitet sich von Ausgangssituation und eigentlichem Ziel ab, also nicht zwingend von einem Weg, den man gerade kennt.
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: Torsten.

Offline Torsten.

  • Access-Profi
  • **
  • Beiträge: 155
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #10 am: Februar 22, 2018, 17:35:10 »
Gut, wie kann ich Dir den Überblick geben?
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1811
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #11 am: Februar 22, 2018, 18:13:19 »
Manchen muss man tatsächlich manchmal erst die deutsche Sprache verständlich machen
Zitat
- warum das stattfindet,  ??
- wo die Daten herkommen, ??
- wo (welches Backend) das stattfindet, ??
- wie oft das stattfindet (über alle 800k Datensätze), ??
- wieviel Beschreibungen maximal zu verketten wären ??
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Torsten.

  • Access-Profi
  • **
  • Beiträge: 155
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #12 am: Februar 23, 2018, 17:26:38 »
Hallo Eberhard,
kurze Zwischeninfo:
Dein "Nachtragscode"
SELECT
   T.gruppe,
   ADOConcatColumn("SELECT beschr_wert FROM tbl WHERE gruppe = '" & T.gruppe & "' ORDER BY sortnr", ";") AS liste
FROM
   (
      SELECT DISTINCT
         gruppe
      FROM
         tbl
   ) AS T

ist es. Da werden die Testdaten (160Tsd) innerhalb 1 Std. generiert.
Jetzt muß ich sehen das ich weitere Daten der Tabelle in die Zieltabelle mit übergeben bekomme.
Da werde ich sicherlich noch Fragen haben.
Bis hierhin schonmalvielen Dank für Deine Hilfe.

Gruß Torsten.
 

Offline Torsten.

  • Access-Profi
  • **
  • Beiträge: 155
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #13 am: Februar 23, 2018, 17:49:23 »
Ich habe die Demo-DB aktualisiert.
Darin ist zu sehen, dass wenn ich den "Nachtrag-Code" in der Abfrage verwende,
es keine Möglichkeit gibt weiteren Felder der Tabelle in die Abfrage zu ziehen um die Daten an die Zieltabelle zu übergeben.
Ich habe unter Funktion jeweils "Ausdruck" und "Gruppierung" ausprobiert.

Gibt es da eine Möglichkeit?
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 900
Re: Eine weitere Access-Datei öffnen wenn...
« Antwort #14 am: Februar 23, 2018, 18:15:50 »
Eine Abfrage kann nur die Felder verwenden, die im FROM-Teil (=> Unterabfrage) bereitgestellt werden:
Zitat
INSERT INTO tblErgebnis ( gruppe, [-liste-so soll es werden], textfeld1 )
SELECT
   T.gruppe,
   ADOConcatColumn("SELECT beschr_wert FROM tbl WHERE gruppe = '" & T.gruppe & "' ORDER BY sortnr",";") AS liste, [textfeld1] AS test,
   T.textfeld1
FROM (SELECT DISTINCT gruppe, textfeld1 FROM tbl)  AS T;
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: Torsten.