Import Kundentexte

Wie man seine Daten nach AvERP einlesen kann.

Moderator: SYNERPY

Antworten
Gamma
Beiträge: 23
Registriert: Fr Okt 27, 2006 8:19 am

Import Kundentexte

Beitrag von Gamma »

Welche Möglichkeit gibt es die Kundentexte aus einer externen Quelle zu importieren?
UliS
Beiträge: 399
Registriert: Fr Mai 26, 2006 3:44 pm
Wohnort: Velbert-Langenberg

zu Kundentexte importieren

Beitrag von UliS »

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.
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
Gamma
Beiträge: 23
Registriert: Fr Okt 27, 2006 8:19 am

Beitrag von Gamma »

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
miboe
Beiträge: 1295
Registriert: Fr Jul 28, 2006 9:13 am

Beitrag von miboe »

... hm, und das ist jetzt einfacher :shock: ?

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
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

@Gamma: Auch der IBExpert aht einen grafischen Designer (jedenfalls in der Vollversion).
MiLLHouSe
Beiträge: 27
Registriert: Di Nov 27, 2007 11:05 am
Wohnort: Erlangen

Beitrag von MiLLHouSe »

@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
MiLLHouSe
Beiträge: 27
Registriert: Di Nov 27, 2007 11:05 am
Wohnort: Erlangen

Beitrag von MiLLHouSe »

Ich habe es jetzt schonmal damit probiert

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 & "');"
das funktioniert aber leider nicht. (barttx_struktur ist meine Tabelle, in der die Daten stehen, die in BARTTX sollen)

Laufzeitfehler '424'. Objekt erforderlich.
MiLLHouSe
Beiträge: 27
Registriert: Di Nov 27, 2007 11:05 am
Wohnort: Erlangen

Beitrag von MiLLHouSe »

So, sorry, ich nochmal...

Ich bin ja vielleicht ... Naja. Ich habe jetzt mal testweise meine barttx_struktur mit einer Zeile Daten gefüllt und diese mit Data Import for Interbase importiert und siehe da... meine Daten sind in der DB, so wie's sein soll.

Mein Problem ist damit behoben.

Alexander
Antworten