Thema Datum  Von Nutzer Rating
Antwort
Rot Laufzeitfehler 3155 - ODBC Insert fehlgeschlagen: Constraints herausfinden
25.08.2022 16:05:02 am2
NotSolved

Ansicht des Beitrags:
Von:
am2
Datum:
25.08.2022 16:05:02
Views:
599
Rating: Antwort:
  Ja
Thema:
Laufzeitfehler 3155 - ODBC Insert fehlgeschlagen: Constraints herausfinden

Hi, ich habe das Problem, dass ich beim Versuch, in eine ODBC- verknüpfte Tabelle (SQLite) mittels insert- Befehl zu füllen, eine Fehlermeldung "Systemressourcen nicht ausreichend" bekomme.

Da habe ich in meiner Einfalt gedacht, ich erzeuge eine interne Tabelle mit gewünschtem Inhalt und schiebe diese dann datensatzweise in die Tabelle.

Auf diese Weise bekomme ich aber den Fehler 3155. Ich vermute, dass es mit den Constraints in der Ziel- Datenbank zusammenhängt. Allerdings verrät mir das System nicht mehr, welche Constraints (wenn es überhaupt daran liegt) das Problem sind. Die lapidare Fehlermeldung "kann Datensatz nicht in verknüpfte ODBC- Tabelle einfügen" ist da wenig zielführend.

der wesentliche Code sieht wie folgt aus:

 

Private Function copy_cell(rownum As Integer, rsZiel As Recordset, rsQuelle As Recordset, Index As Integer) As String
  Dim err_txt As String
  On Error GoTo ErrorMessage:
    copy_cell = ""
    rsZiel.Fields(Index+1) = pcrsQuelle.Fields(Index)
    Exit Function
  ErrorMessage:
    err_txt = "Zeile " & Str(rownum )
    err_txt = err_txt & " [" & rsZiel.Fields(Index +1).Name & "] "
    err_txt = err_txt & "<" & Err.Description & ">"
    copy_cell = err_txt
    Resume Next
End Function

private sub copy_table(TabelleZiel As String, TabelleQuelle As String)
  Set rsZiel = dbx.OpenRecordset(TabelleZiel)
  Set rsQuelle = dbx.OpenRecordset(TabelleQuelle)

  zahl = 0
  Do While Not rsQuelle.EOF
    zahl = zahl + 1
    rsZiel.AddNew
    rsZiel.Fields(0) = zahl 'Primärschlüssel
  
    'Spaltenweise Datensatz von Quelle nach Ziel kopieren
    'ist im konkreten etwas komplizierter, da die Felder vielleicht nicht in der gleichen Reihenfolge vorliegen, aber das habe ich schon abgefangen
    For Index = 0 To rsZiel.Fields.Count - 1
      'in s steht was drin, wenn dabei ein Fehler aufgetreten wird (err.description ist dummerweise leer)
      'wird im Original datensatzweise als Messagebox angezeigt
      s = copy_cell(zahl, rsZiel, rsQuelle, Index)
    Next Index
    rsZiel.Update 'genau hier kommt die Fehlermeldung
    rsQuelle.MoveNext
  loop

 

Ich habe den Originalquelltext etwas vereinfacht, so dass das Wesentliche besser erkennbar ist. Aber ich vermute, lauffähig ist es so nicht. Ich hoffe, es macht sich dennoch jemand die Mühe :)

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Laufzeitfehler 3155 - ODBC Insert fehlgeschlagen: Constraints herausfinden
25.08.2022 16:05:02 am2
NotSolved