Access-o-Mania

Access-Forum => Tabelle/Abfrage => Thema gestartet von: Brusellise am Dezember 27, 2017, 11:45:12

Titel: Importabfrage - falsche Struktur
Beitrag von: Brusellise am Dezember 27, 2017, 11:45:12
Hallo,

wir müssen aus SAP zwei Tabellen exportieren und diese in Access importieren um unsere Daten leichter auswerten zu können.

Leider kommt es bei den Usern immer wieder vor, dass Sie beim abspeichern der .xlsx Dateien die Struktur / Abbau vertauschen, heißt sie speichern Abfrage 1 ab, diese ist aber eigentlich Abfrage 2 und umgekehrt.

Der Import erfolgt über ein Button. Wenn die Struktur stimmt klappt alles. Wenn halt nicht muss ich immer wieder die falsch importieren Daten löschen.

Wie kann ich die abfangen? Problem. Hinweise das Feld "Beleg" Primärschlüssel in beiden Tabellen gibt bei beiden .xlsx Dateien.

Danke für eure Hilfe.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: steffen0815 am Dezember 27, 2017, 11:50:50
Hallo,
wie unterscheiden sich die beiden Strukturen?
Unterschiedliche Spaltennamen sollten doch sofort zum Fehler führen!? Woran erkennst du falsch importierte Daten?
Wie erfolgt dein Import genau? Code?
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: Brusellise am Dezember 27, 2017, 13:22:31
Also die Daten innerhalb beiden Tabellen sind fast überall unterschiedlich.
Außer das Feld Belege.

Der Import erfolgt über eine Anfügeabfrage.
Das User klickt dann auf ein Button. Hier gibt es eine Vba Ereignis.
Dort schalte ich die Fehlermeldungen aus, da ich gerne die ganzen Rückfragen ob Datensatz anfügen etc. den User sparen möchte.

Ich sehe, dass die Datensätze nicht stimmen, wenn zum Beispiel das Feld Status "leer" ist.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: steffen0815 am Dezember 27, 2017, 13:25:56
Hallo,
wenn eine Laufzeitfehler ausgelöst wird, kannst du mit currentdb.execute "Deine Anfügeabfrage", dbfailonerror arbeitenund den Fehler abfangen.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: Brusellise am Dezember 27, 2017, 13:46:32
Hi,

nein einen Laufzeitfehler habe ich nicht.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: Beaker s.a. am Dezember 27, 2017, 13:49:28
Hallo,
Ich würde ja erstmal nachfragen an welcher Stelle die User den Fehler machen (können),
1. beim Export aus SAP
2. beim Import in Access
3. beim Export aus Access ?
Bei 1. sehe ich keine Möglichkeit des Eingreifens.
Bei 2. könnte man vielleicht die Struktur (Feldnamen) überprüfen.
Bei 3. sollten die Objektnamen (Abfragen/Zieldateien) eigentlich "fest verdrahtet" sein.
gruss ekkehard
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: steffen0815 am Dezember 27, 2017, 13:51:18
Hallo,
Zitat
Dort schalte ich die Fehlermeldungen aus
vs.
Zitat
nein einen Laufzeitfehler habe ich nicht.
Zeige mal bitte den Code.

Zitat
Also die Daten innerhalb beiden Tabellen sind fast überall unterschiedlich.
Außer das Feld Belege.
Wenn das Feld "Belege" in der Anfügeabfrage vorkommt, dann muss beim Fehlen ein LZF ausgelöst werden.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: ebs17 am Dezember 27, 2017, 14:00:32
Zitat
schalte ich die Fehlermeldungen aus
Man braucht sich da nicht wundern, wenn User unwissend und naiv Fehler machen und wiederholen. Eigentor Nummer 1.

Zitat
Das User klickt dann auf ein Button.
Wenn man das Auto gegen  die Wand fährt, um dann nachfolgend den Wagen wieder zu entknittern, hat man Eigentor Nummer 2 geschossen.

Eigentlich würde man erst prüfen und danach handeln, also bei gefundenem Fehler den Import abbrechen und dafür dem User einen vernehmbaren Hinweis geben. Über eine VBA-Ereignisprozedur hat man dazu alle Möglichkeiten in der Hand.

Wenn man nicht schon den Export aus SAP überwachen kann, so kann man doch vor einer Anfügeabfrage die Tabelle auf Inhalte prüfen.

//Nachtrag: Bei zwei Abfragevarianten müsste es sinngemäß auch zwei Importvarianten geben. Dann dürfte man dem Buttonklick auch die Intelligenz mitgeben können, die vorhandene Abfrage dem richtigen Import zuzuordnen.
Dass der User einen Fehler gemacht hat und daher eine Saalrunde fällig wird, kann man ja trotzdem mitteilen.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: Brusellise am Dezember 28, 2017, 10:59:15
Hallo,
Ich würde ja erstmal nachfragen an welcher Stelle die User den Fehler machen (können),
1. beim Export aus SAP
2. beim Import in Access
3. beim Export aus Access ?
Bei 1. sehe ich keine Möglichkeit des Eingreifens.
Bei 2. könnte man vielleicht die Struktur (Feldnamen) überprüfen.
Bei 3. sollten die Objektnamen (Abfragen/Zieldateien) eigentlich "fest verdrahtet" sein.
gruss ekkehard

Hi,

das ist bereits klar. Problem nach / während 1, da der User den falschen Dateinamen abspeichert.
Deshalb brauche ich eine Prüfung vor dem Import nach Access.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: Brusellise am Dezember 28, 2017, 11:01:17
Hallo,
Zitat
Dort schalte ich die Fehlermeldungen aus
vs.
Zitat
nein einen Laufzeitfehler habe ich nicht.
Zeige mal bitte den Code.

Zitat
Also die Daten innerhalb beiden Tabellen sind fast überall unterschiedlich.
Außer das Feld Belege.
Wenn das Feld "Belege" in der Anfügeabfrage vorkommt, dann muss beim Fehlen ein LZF ausgelöst werden.

Hier der Code:

Private Sub Import_EWMLS_Click()
If ExistiertDatei("C:\Temp\EWM_LS.xlsx") Then
    MsgBox "Der Import wird gestartet!" & vbCrLf & "" & vbCrLf & "Der Vorgang kann einige Zeit im Anspruch nehmen.", vbInformation, "Achtung!"
importstart1
Else
    MsgBox "Der Import wird abgebrochen" & vbCrLf & "" & vbCrLf & "Es wurde keine Importdatei gefunden.", vbInformation, "Achtung!"
End If
End Sub

Private Sub importstart1()
DoCmd.SetWarnings False
DoCmd.OpenQuery "qry_IMP_tblKPI_LS"
DoCmd.SetWarnings True
MsgBox "Neue KPI-Daten wurden importiert.", vbInformation, "Info:"
End Sub

Das Belege wird einfach importiert, da es ja Daten mit dem Feldnamen "Belege" in beiden SAP Export Dateien gibt.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: Brusellise am Dezember 28, 2017, 11:03:32
Zitat
schalte ich die Fehlermeldungen aus
Man braucht sich da nicht wundern, wenn User unwissend und naiv Fehler machen und wiederholen. Eigentor Nummer 1.

Zitat
Das User klickt dann auf ein Button.
Wenn man das Auto gegen  die Wand fährt, um dann nachfolgend den Wagen wieder zu entknittern, hat man Eigentor Nummer 2 geschossen.

Eigentlich würde man erst prüfen und danach handeln, also bei gefundenem Fehler den Import abbrechen und dafür dem User einen vernehmbaren Hinweis geben. Über eine VBA-Ereignisprozedur hat man dazu alle Möglichkeiten in der Hand.

Wenn man nicht schon den Export aus SAP überwachen kann, so kann man doch vor einer Anfügeabfrage die Tabelle auf Inhalte prüfen.

//Nachtrag: Bei zwei Abfragevarianten müsste es sinngemäß auch zwei Importvarianten geben. Dann dürfte man dem Buttonklick auch die Intelligenz mitgeben können, die vorhandene Abfrage dem richtigen Import zuzuordnen.
Dass der User einen Fehler gemacht hat und daher eine Saalrunde fällig wird, kann man ja trotzdem mitteilen.

Gebe dir hier voll und ganz recht. Ich würde dies gerne auch abfangen via Prüfung.
Habe nur zu wenig VBA Kenntnis um zu wissen wie dies geht.

Kannst du helfen? Vielleicht mit einem Beispiel?
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: steffen0815 am Dezember 28, 2017, 12:05:02
Hallo,
ganz grob so:Private Sub importstart1()
on error goto Fehler
currentdb.execute  "qry_IMP_tblKPI_LS",dbfailonerror
MsgBox "Neue KPI-Daten wurden importiert.", vbInformation, "Info:"
exit sub
Fehler:
  msgbox "Fehler"
End Sub
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: ebs17 am Dezember 28, 2017, 12:26:15
Private Sub importstart1()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb

    ' Datensätze nicht stimmen, wenn zum Beispiel das Feld Status "leer" ist
    Set rs = db.OpenRecordset( _
             "SELECT Status FROM Importtabelle WHERE Status Is NULL", _
             dbOpenForwardOnly)
    If rs.EOF Then
        db.Execute "qry_IMP_tblKPI_LS", dbFailOnError
        MsgBox db.RecordsAffected & " Datensätze wurden importiert.", vbInformation, "Info:"
    Else
        ' Fehlerdatensätze vorhanden => Meldung
    End If
    rs.Close
End Sub
Das wäre jetzt ein Programmlauf mit vorheriger Datenprüfung, im Unterschied zur Programmsteuerung per Fehler + Fehlerbehandlung.

Unterlasse bitte das vollständige Zitieren von Beiträgen. Die Forenteilnehmer beherrschen Anwendung von Maus und Scrollbalken und können sich auch so die Vorbeiträge vergegenwärtigen.
Titel: Re: Importabfrage - falsche Struktur
Beitrag von: Brusellise am Dezember 28, 2017, 14:55:47
@ebs17

alles klar wird gemacht.


@alle

Vielen Dank. Ich teste dies mal morgen.