GUIDS / Access und SQL Server / Escape Zeichen

12/03/2009 - 12:50 von jens.stolle1970 | Report spam
Hallo,

ich habe mal wieder eine ganz spezielle Frage (Access 2007 & SQL
Server)

Ich habe eine lokale Access Tabelle und möchte diese per Insert in
eine SQL Server Tabelle importieren (und spàter wieder zurück). Das
Problem ergibt sich durch einen Fremdschlüssel in der Tabelle.

Mein erster Ansatz war, den Fremd-Schlüssel lokal als GUID und auf dem
Server auch als GUID zu haben.
Da Acces aber wohl die GUIDs anders handhabt als SQL Serer geht das so
nicht.

Zweiter Ansatz: Lokal als String und Remote als Guid. Müsste gehen, da
ich lokal keine Daten an der Tabelle, die über den Fremdschlüssel
referenziert wird àndere und somit nur die ID für die Verknüpfung
brauche.

Teilweise geht das gut, aber beim schieben der Daten in den SQL Server
macht er mir meine GUIDs kaputt.

Lokal lautet diese {8DC26994-539B-4F48-9BA8-1DDDDEB19C0B}.
Der SQL Server braucht sie aber so:
'8DC26994-539B-4F48-9BA8-1DDDDEB19C0B'

Wenn ich nun

DoCmd.RunSQL ("INSERT INTO dbo_Timetrack (Track_Person,
Track_KundenCRMID) SELECT LocalTimetrack.Track_Person,
LocalTimetrack.Track_KundenCRMID) FROM LocalTimetrack WHERE
LocalTimetrack.EditTrack_ID=0;")

mache, erhalte ich auf dem Server
{{8DC26994-539B-4F48-9BA8-1DDDDEB19C0B}}

Versucht habe ich dann

DoCmd.RunSQL ("INSERT INTO dbo_Timetrack (Track_Person,
Track_KundenCRMID) SELECT LocalTimetrack.Track_Person, CSTR(mid
(LocalTimetrack.Track_KundenCRMID,2,36)) FROM LocalTimetrack WHERE
LocalTimetrack.EditTrack_ID=0;")

das geht aber nicht, leider. Da krieg ich ??????

Als nàchstes würde ich gerne versuchen

DoCmd.RunSQL ("INSERT INTO dbo_Timetrack (Track_Person,
Track_KundenCRMID) SELECT LocalTimetrack.Track_Person, \'CSTR(mid
(LocalTimetrack.Track_KundenCRMID,2,36))\' FROM LocalTimetrack WHERE
LocalTimetrack.EditTrack_ID=0;")

aber Access kennt diese Art zu Escapen nicht. Auch doppelte Hockommas,
dreifache Hockommas, Kombinationen aus hochkommas und
anführungsstrichen hat alles nicht funktioniert.

Hat mir jemand eine Idee?

Vielen Dank!!
 

Lesen sie die antworten

#1 jens.stolle1970
12/03/2009 - 13:19 | Warnen spam
On 12 Mrz., 12:50, ""
wrote:
Hallo,

ich habe mal wieder eine ganz spezielle Frage (Access 2007 & SQL
Server)

Ich habe eine lokale Access Tabelle und möchte diese per Insert in
eine SQL Server Tabelle importieren (und spàter wieder zurück). Das
Problem ergibt sich durch einen Fremdschlüssel in der Tabelle.

Mein erster Ansatz war, den Fremd-Schlüssel lokal als GUID und auf dem
Server auch als GUID zu haben.
Da Acces aber wohl die GUIDs anders handhabt als SQL Serer geht das so
nicht.

Zweiter Ansatz: Lokal als String und Remote als Guid. Müsste gehen, da
ich lokal keine Daten an der Tabelle, die über den Fremdschlüssel
referenziert wird àndere und somit nur die ID für die Verknüpfung
brauche.

Teilweise geht das gut, aber beim schieben der Daten in den SQL Server
macht er mir meine GUIDs kaputt.

Lokal lautet diese {8DC26994-539B-4F48-9BA8-1DDDDEB19C0B}.
Der SQL Server braucht sie aber so:
'8DC26994-539B-4F48-9BA8-1DDDDEB19C0B'

Wenn ich nun

DoCmd.RunSQL ("INSERT INTO dbo_Timetrack (Track_Person,
Track_KundenCRMID) SELECT LocalTimetrack.Track_Person,
LocalTimetrack.Track_KundenCRMID) FROM LocalTimetrack WHERE
LocalTimetrack.EditTrack_ID=0;")

mache, erhalte ich auf dem Server
{{8DC26994-539B-4F48-9BA8-1DDDDEB19C0B}}

Versucht habe ich dann

DoCmd.RunSQL ("INSERT INTO dbo_Timetrack (Track_Person,
Track_KundenCRMID) SELECT LocalTimetrack.Track_Person, CSTR(mid
(LocalTimetrack.Track_KundenCRMID,2,36)) FROM LocalTimetrack WHERE
LocalTimetrack.EditTrack_ID=0;")

das geht aber nicht, leider. Da krieg ich ??????

Als nàchstes würde ich gerne versuchen

DoCmd.RunSQL ("INSERT INTO dbo_Timetrack (Track_Person,
Track_KundenCRMID) SELECT LocalTimetrack.Track_Person, \'CSTR(mid
(LocalTimetrack.Track_KundenCRMID,2,36))\' FROM LocalTimetrack WHERE
LocalTimetrack.EditTrack_ID=0;")

aber Access kennt diese Art zu Escapen nicht. Auch doppelte Hockommas,
dreifache Hockommas, Kombinationen aus hochkommas und
anführungsstrichen hat alles nicht funktioniert.

Hat mir jemand eine Idee?

Vielen Dank!!



Vergesst alles was ich geschrieben habe.

Die zweite Lösung geht, man sollte nur die Änderungen auch in der
richtigen Zeile machen :o)

Ähnliche fragen