Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

AC 2003, Memofeld, Teile auslesen und wegschreiben

Begonnen von Iso, Januar 03, 2011, 11:14:55

⏪ vorheriges - nächstes ⏩

Iso

Hallo zusammen und ein gutes neues Jahr 2011!

Ich stehe etwas auf dem Schlauch... In einer Datenbank habe ich in einer Tabelle ein Memofeld, das Kommata-getrennt Ortsnamen enthält.
Mittelst einer Funktion, die ich gerne über eine Abfrage aufrufen möchte, sollen alle Ortsnamen ausgelesen und in eine andere Tabelle weggeschrieben werden.

Gefunden habe ich bislang die folgende Funktion:

Function splitAndJoinTest(Memodaten As String)
Dim aStrWithoutDimension As Variant, i As Long
    aStrWithoutDimension = Split(Expression:=Memodaten, delimiter:=",")
    For i = LBound(aStrWithoutDimension) To UBound(aStrWithoutDimension)
        splitAndJoinTest = aStrWithoutDimension(i)
    Next i
End Function


Diese Funktion ausgeführt in einer Auswahlabfrage (Feld: MeineNeueZeile: splitAndJoinTest([Ort])), liefert jedoch (mir unverständlich) nicht alle Namen aus allen Memofeldern der Tabelle. Irgendwo scheint noch ein weiterer Zähler zu fehlen?!
Könnte mir bitte jemand einen Tipp geben?

DF6GL

Hallo und auch gutes Neues Jahr.


Wo schreibst Du nun in die andere Tabelle?


Die Funktion selber liefert aber auch nur den letzten Ortsnamen aus dem Memofeld desjenigen Datensatzes zurück, auf den die Abfrage aktuell zugreift.

Eher so:

Function splitAndJoinTest(Memodaten As String)
Dim aStrWithoutDimension As Variant, i As Long
   aStrWithoutDimension = Split(Expression:=Memodaten, delimiter:=",")
   For i = LBound(aStrWithoutDimension) To UBound(aStrWithoutDimension)
       ' hier in andere Tabelle schreiben
          Currentdb.Execute "Insert into tblAndereTabelle (Ort) Values ('" & aStrWithoutDimension(i) & "'")

   Next i
End Function

Iso

Hallo Franz,

Vielen Dank!
Ich habe jetzt eine Tabelle angelegt mit ID und Ort und Deinen Vorschlag entsprechend angepasst ausgeführt:

CurrentDb.Execute "Insert into AusMemoOrte(Ort) Values ('" & aStrWithoutDimension(i) & "')"

Das scheint auch soweit zu laufen. Ein Problem scheint nun noch zu sein, dass bei französischen Ortsnamen (Bsp: "Arrondissement d'Altkirch") ein Syntaxfehler kommt, der vermutlich mit den Hochkommata zusammenhängt. Jedenfalls bricht der Lauf dort ab, mit dem Hinweis auf einen Syntaxfehler:

Laufzeitfehler '3075': Syntaxfehler (fehlender Operator) in Abfrageausdruck " Arrondissement d'Altkirch (2631)')'.

Hast Du dazu noch eine Idee für mich?


database