none
OLE Feld kopieren

    Frage

  • Hallo

    Ich habe in einer Access 2013 Tabelle ein gebundenes OLE Feld (Word Dokument).

    Ich möchte den Inhalt dieses Feldes jetzt in alle anderen Datensätze der gleichen Tabelle kopieren.

    Alle meine Versuche per VBA und SQL sind bisher gescheitert mit Fehler 2498

    Bin für jeden Lösungsvorschlag dankbar

    Freitag, 2. Juni 2017 08:49

Antworten

  • ich habe mal einen Test gemacht.

    Leider kann man im Access  2013 keinen Update mit einer Subquery die RTF-Daten liefert ausführen.

    Dann bleibt mal wieder nur VBA. Hier mal ein kurzer Code-Schnipsel der das geforderte umsetzt, vorausgesetzt es gibt eine Id für den zu kopierenden Datensatz.

    Dabei musst Du folgendes an deine Bedürfnisse anpassen:

    Tabelle1 an deinen Tabellennamen

    ID an deinen Primärschlüssel (Datentyp beachten)

    Text ist das Feld mit den RTF-Daten.

    Public Sub CopyData(Id As String)
      Dim rs1 As Recordset
      Dim rs2 As Recordset
      Dim value As String
      Set rs1 = CurrentDb.OpenRecordset("Select Text From Tabelle1 where Id=" + Id)
      value = rs1.Fields("Text").value
      Set rs2 = CurrentDb.OpenRecordset("Select Text From Tabelle1 where Id<>" + Id)
      Do Until (rs2.EOF)
        rs2.Edit
        rs2.Fields("Text").value = value
        rs2.Update
        rs2.MoveNext
      Loop
    End Sub

    Grüße

    Roland


    • Bearbeitet Roland Franz Freitag, 2. Juni 2017 10:09
    • Als Antwort markiert bruecher Dienstag, 6. Juni 2017 07:14
    Freitag, 2. Juni 2017 10:08
  • Hallo Roland

    Vielen Dank für Deine Anregung

    Habe Deinen Quelltext an 2 Stellen geändert.

    DIM rs2 as Recordset musste ich ändern in DAO.Recordset, da ich sonst immer bei rs2.edit den Fehler "Methode nicht vorhanden" bekam.

    Und rs2.Fields("Text").value = value habe ich geändert in rs2.Fields("Text") = rs1.Fields("Text")

    Jetzt wird nicht nur der Inhalt kopiert sondern auch die Verknüpfung.

    Läuft jetzt so wie gewünscht.

    Nochmals vielen Dank !



    • Als Antwort markiert bruecher Dienstag, 6. Juni 2017 07:14
    Dienstag, 6. Juni 2017 07:13

Alle Antworten

  • Hallo bruecher,

    haben die Datensätze in der Tabelle einen Primärschlüssel, also eine eindeutige ID?

    Kennst Du die ID des Datensatzes den Du kopiern willst?

    Wenn Ja sollte es Möglichkeiten geben.

    Grüße

    Roland

    Freitag, 2. Juni 2017 09:40
  • ich habe mal einen Test gemacht.

    Leider kann man im Access  2013 keinen Update mit einer Subquery die RTF-Daten liefert ausführen.

    Dann bleibt mal wieder nur VBA. Hier mal ein kurzer Code-Schnipsel der das geforderte umsetzt, vorausgesetzt es gibt eine Id für den zu kopierenden Datensatz.

    Dabei musst Du folgendes an deine Bedürfnisse anpassen:

    Tabelle1 an deinen Tabellennamen

    ID an deinen Primärschlüssel (Datentyp beachten)

    Text ist das Feld mit den RTF-Daten.

    Public Sub CopyData(Id As String)
      Dim rs1 As Recordset
      Dim rs2 As Recordset
      Dim value As String
      Set rs1 = CurrentDb.OpenRecordset("Select Text From Tabelle1 where Id=" + Id)
      value = rs1.Fields("Text").value
      Set rs2 = CurrentDb.OpenRecordset("Select Text From Tabelle1 where Id<>" + Id)
      Do Until (rs2.EOF)
        rs2.Edit
        rs2.Fields("Text").value = value
        rs2.Update
        rs2.MoveNext
      Loop
    End Sub

    Grüße

    Roland


    • Bearbeitet Roland Franz Freitag, 2. Juni 2017 10:09
    • Als Antwort markiert bruecher Dienstag, 6. Juni 2017 07:14
    Freitag, 2. Juni 2017 10:08
  • Hallo Roland

    Vielen Dank für Deine Anregung

    Habe Deinen Quelltext an 2 Stellen geändert.

    DIM rs2 as Recordset musste ich ändern in DAO.Recordset, da ich sonst immer bei rs2.edit den Fehler "Methode nicht vorhanden" bekam.

    Und rs2.Fields("Text").value = value habe ich geändert in rs2.Fields("Text") = rs1.Fields("Text")

    Jetzt wird nicht nur der Inhalt kopiert sondern auch die Verknüpfung.

    Läuft jetzt so wie gewünscht.

    Nochmals vielen Dank !



    • Als Antwort markiert bruecher Dienstag, 6. Juni 2017 07:14
    Dienstag, 6. Juni 2017 07:13