Import Kundentexte
Moderator: SYNERPY
-
- Beiträge: 23
- Registriert: Fr Okt 27, 2006 8:19 am
Import Kundentexte
Welche Möglichkeit gibt es die Kundentexte aus einer externen Quelle zu importieren?
-
- Beiträge: 399
- Registriert: Fr Mai 26, 2006 3:44 pm
- Wohnort: Velbert-Langenberg
zu Kundentexte importieren
Hallo Gamma,
am aufschlußreichsten ist der Beitrag http://forum.synerpy.de/viewtopic.php?t ... ght=import
von miboe.
- Daten nach csv mit Delimitter ; Semikolon exportieren
- eine temporäre Tabelle TKUNDENTEXT per ibexpert NEW Table
erzeugen(Feldgrößen am besten schon wie in der AvERP-Zieltabelle
diese findet man am einfachsten, wenn man sich das Ziel über die AvERP-Oberfläche sucht und sich über Hilfe EditSQL die zugrunde liegende View/Tabelle sucht - für Artikel-Kundentexte z.B (V_)BSAKTX
- Daten per IBEXPERT INSERTEX in die Transfertabelle einlesen
Alternative statt csv-Export und INSERTEX falls Quell-Daten per ODBC-ausgelesen werden können, per IBEXPERT ibeblock-Prozedur einlesen. execute ibeblock
Nun der schwierigere Teil: Aufbau der notwendigen Fremdschlüssel-Beziehungen der AvERP-Tabelle BSAKTX zum Artikelstamm BSA, zum Kundenstamm BKUNDE, zur Preisliste BKUSE1 und zur Sprache des Text über die passende ID aus der Tabelle BSPRA.
--man baue sich per IBEXPERT eine Procedure, welche alle Sätze der Hilfstabelle TKUNDENTEXT ausliest, dann die IDs für Artikel und Kunde bestimmen - Sprache und Preisliste können sicher konstant gesetzt werden, um dann endlich einen richtig verknüpften Satz in die Tabelle BSAKTX einfügen zu können.
Zugegeben: einfach und komfortables ist das nicht.
Aufsetzen lohnt sich nur bei mehreren Hundert Texten.
Sonst ist es effektiver die AvERP-Anwendung per Handarbeit und Cut und Paste zu füttern.
am aufschlußreichsten ist der Beitrag http://forum.synerpy.de/viewtopic.php?t ... ght=import
von miboe.
- Daten nach csv mit Delimitter ; Semikolon exportieren
- eine temporäre Tabelle TKUNDENTEXT per ibexpert NEW Table
erzeugen(Feldgrößen am besten schon wie in der AvERP-Zieltabelle
diese findet man am einfachsten, wenn man sich das Ziel über die AvERP-Oberfläche sucht und sich über Hilfe EditSQL die zugrunde liegende View/Tabelle sucht - für Artikel-Kundentexte z.B (V_)BSAKTX
- Daten per IBEXPERT INSERTEX in die Transfertabelle einlesen
Alternative statt csv-Export und INSERTEX falls Quell-Daten per ODBC-ausgelesen werden können, per IBEXPERT ibeblock-Prozedur einlesen. execute ibeblock
Nun der schwierigere Teil: Aufbau der notwendigen Fremdschlüssel-Beziehungen der AvERP-Tabelle BSAKTX zum Artikelstamm BSA, zum Kundenstamm BKUNDE, zur Preisliste BKUSE1 und zur Sprache des Text über die passende ID aus der Tabelle BSPRA.
--man baue sich per IBEXPERT eine Procedure, welche alle Sätze der Hilfstabelle TKUNDENTEXT ausliest, dann die IDs für Artikel und Kunde bestimmen - Sprache und Preisliste können sicher konstant gesetzt werden, um dann endlich einen richtig verknüpften Satz in die Tabelle BSAKTX einfügen zu können.
Zugegeben: einfach und komfortables ist das nicht.
Aufsetzen lohnt sich nur bei mehreren Hundert Texten.
Sonst ist es effektiver die AvERP-Anwendung per Handarbeit und Cut und Paste zu füttern.
Gruß U.Schmidt
averpen4dummies.blogspot.de -- off
Wenn ich weiß, wo ich suchen muß ist OpenSource besser als jede Dokumentation
aktuelle Erkenntnisse mit:
Software-Version 6.11.1
FDB 2023.02 / ohne 2024
averpen4dummies.blogspot.de -- off
Wenn ich weiß, wo ich suchen muß ist OpenSource besser als jede Dokumentation
aktuelle Erkenntnisse mit:
Software-Version 6.11.1
FDB 2023.02 / ohne 2024
-
- Beiträge: 23
- Registriert: Fr Okt 27, 2006 8:19 am
Hmm,
in der Tat ziemlich aufwendig.
Da ich noch einige andere Daten importieren muß, habe ich mich für eine VBA Lösung in ACCESS entschieden.
ACCESS LINK klappt ja wegen des BLOB nicht, deshalb habe ich es als ODBC PASSTROUGH realisiert.
Die notwendigen Linkkeys kann man sich problemlos aus verlinkten ACCESS Tabellen zusammensuchen.
Schleife drum, fertig, und die RTF Formatierung ist dann auch dabei.
Es fehlt lediglich noch die Umschlüsselung der Umlaute. Aber das ist ein simples "replace" statement.
Als Bsp. mal für BSA_ID_Linkkey = 100
Vorteil der Lösung in ACCESS: Import ist in der Regel 1X Sache, und die grafische Oberfläche von ACCESS bei dem Design von Queries mehr als hilfreich.
Klappt natürlich nur, wenn man sich in IBexpert die foreign keys genau angeguckt hat.
Sub Pass_T()
Dim mdbs As Database
Dim M_q As QueryDef
Dim start_s, ende_s, sql2 As String
start_s = "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil Arial;}{\f1\fnil\fcharset0 Arial;}}" & Chr(13) & _
"{\colortbl ;\red0\green0\blue0;}" & Chr(13) & _
"\viewkind4\uc1\pard\cf1\f0\fs20"
ende_s = "\cf0\f1\fs16" & Chr(13) & "\par }"
Set mdbs = DBEngine.Workspaces(0).Databases(0)
Set M_q = mdbs.CreateQueryDef("")
sql2 = "INSERT INTO BSAKTX ( BSA_ID_LINKKEY, BSPRA_ID, KATEGORIE ,text) Values (100 , 5, 'N','" & start_s & "BEISPIEL TEXT" & ende_s & "');"
M_q.Connect = "ODBC;DSN=AVERP;Driver=Firebird/InterBase(r) driver;Dbname=E:\Programme\AVERP\AvERP.gdb;CHARSET=NONE;PWD=DKEBFJENHFCOBHGHLAIMNAAFICELEAEGDNMFNOGALAMHBBGCHFADNKCBPPGMANOGIEKENIOPHDIPBIECPLLLCBIKEJKMJLPLIB;UID=SYSDBA"
M_q.SQL = sql2
M_q.ReturnsRecords = False
M_q.Execute
M_q.Close
in der Tat ziemlich aufwendig.
Da ich noch einige andere Daten importieren muß, habe ich mich für eine VBA Lösung in ACCESS entschieden.
ACCESS LINK klappt ja wegen des BLOB nicht, deshalb habe ich es als ODBC PASSTROUGH realisiert.
Die notwendigen Linkkeys kann man sich problemlos aus verlinkten ACCESS Tabellen zusammensuchen.
Schleife drum, fertig, und die RTF Formatierung ist dann auch dabei.
Es fehlt lediglich noch die Umschlüsselung der Umlaute. Aber das ist ein simples "replace" statement.
Als Bsp. mal für BSA_ID_Linkkey = 100
Vorteil der Lösung in ACCESS: Import ist in der Regel 1X Sache, und die grafische Oberfläche von ACCESS bei dem Design von Queries mehr als hilfreich.
Klappt natürlich nur, wenn man sich in IBexpert die foreign keys genau angeguckt hat.
Sub Pass_T()
Dim mdbs As Database
Dim M_q As QueryDef
Dim start_s, ende_s, sql2 As String
start_s = "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil Arial;}{\f1\fnil\fcharset0 Arial;}}" & Chr(13) & _
"{\colortbl ;\red0\green0\blue0;}" & Chr(13) & _
"\viewkind4\uc1\pard\cf1\f0\fs20"
ende_s = "\cf0\f1\fs16" & Chr(13) & "\par }"
Set mdbs = DBEngine.Workspaces(0).Databases(0)
Set M_q = mdbs.CreateQueryDef("")
sql2 = "INSERT INTO BSAKTX ( BSA_ID_LINKKEY, BSPRA_ID, KATEGORIE ,text) Values (100 , 5, 'N','" & start_s & "BEISPIEL TEXT" & ende_s & "');"
M_q.Connect = "ODBC;DSN=AVERP;Driver=Firebird/InterBase(r) driver;Dbname=E:\Programme\AVERP\AvERP.gdb;CHARSET=NONE;PWD=DKEBFJENHFCOBHGHLAIMNAAFICELEAEGDNMFNOGALAMHBBGCHFADNKCBPPGMANOGIEKENIOPHDIPBIECPLLLCBIKEJKMJLPLIB;UID=SYSDBA"
M_q.SQL = sql2
M_q.ReturnsRecords = False
M_q.Execute
M_q.Close
-
- Beiträge: 1295
- Registriert: Fr Jul 28, 2006 9:13 am
... hm, und das ist jetzt einfacher
?
Nein im Ernst, es kommt natürlich massiv darauf an, in welcher Sprache man am schnellsten und effektivsten ist. Bei mir war das halt SQL, da ich VBA größtenteils (90% der Zeit) als Excel-Verbieger benutze und mich in die ganzen Objekte, Methoden und Eigenschaften von Access erst hätte einarbeiten müssen.
Ebenfalls aus der Rubrik "Geschmackssache": die etwas deutlicheren Fehlermeldungen des IBexpert, weil er halt dann doch näher an der Datenbank dran ist, als über ODBC und somit eine Verfälschung der Fehlermeldung sowie natürlich eine zusätzliche Fehlerquelle wegfällt.
ABER: auch wir haben hier einige Dinge über ODBC gemacht. Es ist halt unschlagbar genial, wenn man z.B. nach der Inventur einfach die Spalte mit den Zählwerten per Copy&Paste aus Excel nach Access in die BINVRK kopiert und fertig. Vorher natürlich richtig sortiert ... 5 Minuten Arbeit, 10 Mausklicks, 10.000 Inventurwerte eingegeben. Punkt. An der Stelle haben dann auch die Skeptiker verstanden, warum ein System mit modernen Schnittstellen zum restlichen Windows-Umfeld gewisse Vorteile gegenüber einer 20 Jahre alten DOS (eigentlich sogar Novell) Software hat.
Auf jeden Fall aber viel Erfolg
Michael
![Shocked :shock:](./images/smilies/icon_eek.gif)
Nein im Ernst, es kommt natürlich massiv darauf an, in welcher Sprache man am schnellsten und effektivsten ist. Bei mir war das halt SQL, da ich VBA größtenteils (90% der Zeit) als Excel-Verbieger benutze und mich in die ganzen Objekte, Methoden und Eigenschaften von Access erst hätte einarbeiten müssen.
Ebenfalls aus der Rubrik "Geschmackssache": die etwas deutlicheren Fehlermeldungen des IBexpert, weil er halt dann doch näher an der Datenbank dran ist, als über ODBC und somit eine Verfälschung der Fehlermeldung sowie natürlich eine zusätzliche Fehlerquelle wegfällt.
ABER: auch wir haben hier einige Dinge über ODBC gemacht. Es ist halt unschlagbar genial, wenn man z.B. nach der Inventur einfach die Spalte mit den Zählwerten per Copy&Paste aus Excel nach Access in die BINVRK kopiert und fertig. Vorher natürlich richtig sortiert ... 5 Minuten Arbeit, 10 Mausklicks, 10.000 Inventurwerte eingegeben. Punkt. An der Stelle haben dann auch die Skeptiker verstanden, warum ein System mit modernen Schnittstellen zum restlichen Windows-Umfeld gewisse Vorteile gegenüber einer 20 Jahre alten DOS (eigentlich sogar Novell) Software hat.
Auf jeden Fall aber viel Erfolg
Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
-
- Beiträge: 27
- Registriert: Di Nov 27, 2007 11:05 am
- Wohnort: Erlangen
@Gamma
Deine Lösung in Access gefällt mir sehr gut. Da ich momentan die gleichen Probleme bezüglich Import der Kunden- und Bestelltexte habe, habe ich mal deinen Code bei den Bestelltexten ausprobiert.
Mit ein paar Abänderungen klappt das auch. Da ich jetzt aber nicht der große Progammierer bin, hoffe ich, dass du mir hierzu vielleicht kurz helfen kannst.
Ich bräuchte diesen Code jetzt dann so, dass eine vorher generierte Abfrage, in der meine aufbereiteten Daten stehen, aufgerufen wird.
Z.B. steht in der Abfrage dann eben die BSA_ID..., die BSPAR_ID, die Kategorie und eben der Text in Klarschrift.
Jetzt müsste in dem Code irgendwie die Abfrage aufgerufen werden und der Text entsprechend deinem Beispiel aufbereitet werden, woran es bei mir leider scheitert. Zumal ich ja eine Schleife bräuchte, damit der code solange ausgeführt wird, bis die Abfrage am Ende ist.
Ich würde mich wirklich sehr freuen, wenn mir hier jemand (Gamma??) weiterhelfen könnte.
Danke und Gruß
Alexander
Deine Lösung in Access gefällt mir sehr gut. Da ich momentan die gleichen Probleme bezüglich Import der Kunden- und Bestelltexte habe, habe ich mal deinen Code bei den Bestelltexten ausprobiert.
Mit ein paar Abänderungen klappt das auch. Da ich jetzt aber nicht der große Progammierer bin, hoffe ich, dass du mir hierzu vielleicht kurz helfen kannst.
Ich bräuchte diesen Code jetzt dann so, dass eine vorher generierte Abfrage, in der meine aufbereiteten Daten stehen, aufgerufen wird.
Z.B. steht in der Abfrage dann eben die BSA_ID..., die BSPAR_ID, die Kategorie und eben der Text in Klarschrift.
Jetzt müsste in dem Code irgendwie die Abfrage aufgerufen werden und der Text entsprechend deinem Beispiel aufbereitet werden, woran es bei mir leider scheitert. Zumal ich ja eine Schleife bräuchte, damit der code solange ausgeführt wird, bis die Abfrage am Ende ist.
Ich würde mich wirklich sehr freuen, wenn mir hier jemand (Gamma??) weiterhelfen könnte.
Danke und Gruß
Alexander
-
- Beiträge: 27
- Registriert: Di Nov 27, 2007 11:05 am
- Wohnort: Erlangen
Ich habe es jetzt schonmal damit probiert
das funktioniert aber leider nicht. (barttx_struktur ist meine Tabelle, in der die Daten stehen, die in BARTTX sollen)
Laufzeitfehler '424'. Objekt erforderlich.
Code: Alles auswählen
sql2 = "INSERT INTO BARTTX ( BSA_ID_LINKKEY, BSPRA_ID, KATEGORIE ,TEXT ) Values (" & barttx_struktur.bsa_id_linkkey & "," & barttx_struktur.bspra_id & "," & barttx_struktur.kategorie & ",'" & start_s & " barttx_struktur.text1 " & ende_s & "');"
Laufzeitfehler '424'. Objekt erforderlich.
-
- Beiträge: 27
- Registriert: Di Nov 27, 2007 11:05 am
- Wohnort: Erlangen