Kopieren replizierter Tabelle (Problem s_ColLineage )

11/06/2009 - 09:06 von Platinfish | Report spam
Grüezi mitenand

Ich habe eine grosse replizierte Tabelle.

Die Replikation kann nur über Modem erfolgen (langsam)

Auf dem Erfassungslaptop reicht es, wenn in der Tabelle nur die Daten
des laufenden Jahres abgelegt sind.

Auf dem Hauptcomputer, im Designmaster sind für Jahresvergleiche
zumindest zeitweise auch die Daten der vergangenen Jahre nötig.

Um nicht immer sàmtliche Daten replizieren zu müssen (bis zu 4 Stunden
bei Verbindungen nach Übersee) habe ich das Ganze nun so gelöst:

Auf einen Klick speichere ich die Daten der vergangenen Jahre in einer
2. Tabelle mit gleicher Struktur wie die replizierte Haupttabelle und
lösche diese dann in der Haupttabelle.
Brauche ich sie für eine Auswertung hole ich die Daten wieder aus der
Tabelle 2 zurück um sie nach der Auswertung (aber noch vor der
nàchsten Replikation) wieder nach obigem Muster zu exportieren.

So bleiben die Replikationszeiten im ertràglichen Rahmen. (max. 25
min)

Der SQL-Syntax für das Exportieren bzw. Importieren musste ich wie
folgt lösen:
INSERT INTO Feld1, Feld2 . Feld36
Diese Variante ist sehr mühsam, vor allem dann, wenn einmal die
Tabellenstruktur angepasst werden muss.

Die Lösung "INSERT INTO T_Tabelle SELECT T_TabelleArchiv.* FROM
T_TabelleArchiv; produziert mir den Fehler:

"Sie können das Replikationssystemobjekt s_ColLineage nicht àndern"

Gibts für mein Problem eine einfachere Lösung?

Grüsse aus dem sonnigen Appenzellerland
Ernst
 

Lesen sie die antworten

#1 Peter Doering
11/06/2009 - 10:16 | Warnen spam
Hallo,

Platinfish wrote:

Ich habe eine grosse replizierte Tabelle.
[...]
Der SQL-Syntax für das Exportieren bzw. Importieren musste ich wie
folgt lösen:
INSERT INTO Feld1, Feld2 . Feld36
Diese Variante ist sehr mühsam, vor allem dann, wenn einmal die
Tabellenstruktur angepasst werden muss.

Die Lösung "INSERT INTO T_Tabelle SELECT T_TabelleArchiv.* FROM
T_TabelleArchiv; produziert mir den Fehler:

"Sie können das Replikationssystemobjekt s_ColLineage nicht àndern"

Gibts für mein Problem eine einfachere Lösung?



Nein. Wenn die Feldliste nicht angegeben ist, werden alle Felder
angesprochen, einschliesslich derer, die nicht aktualisiert werden duerfen.
Die einzige Vereinfachung, die ich sehe ist, das Statement per Code
aufzubauen und die ungewollten Felder auszulassen. Beispiel:

Dim Db As DAO.Database
Dim Tdf As DAO.TableDef
Dim Fld As DAO.Field
Dim strFields As String
Dim strSQL As String

Set Db = CurrentDb
Set Tdf = Db.TableDefs("QuellTab")

For Each Fld In Tdf.Fields
Select Case Fld.Name
Case "s_ColLineage", "<weiteres Feld>"
Case Else
strFields = strFields & ", [" & Fld.Name & "]"
End Select
Next Fld

Set Fld = Nothing
Set Tdf = Nothing

strFields = Mid(strFields, 3) 'erstes Komma abschneiden

strSQL = "INSERT INTO ZielTab ( " & strFields & " ) " & _
" SELECT " & strFields & " FROM QuellTab WHERE ..."
Db.Execute strSQL, dbFailOnError

(Luftcode)

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen