Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: Anwendungsmöglichkeit

Anwendungsmöglichkeit 4 Jahre 2 Monate her #1083

  • Altermatt Thomas
  • Altermatt Thomass Avatar
  • Offline
  • New Member
  • Beiträge: 10
Hallo zusammen

Ich bin in der Artikelstamm-Datenpflege tätig. Ich habe eine grosse Access-Datei mit allen Artikeln aller Lieferanten. Die Lieferantendaten kommen sehr unterschiedlich zu mir (Excel, Text...).

Ich möchte nun die Lieferanten-Datei (ev. vorbearbeitet) mit der Gesamtliste abgleichen: Neue Datensätze hinzulesen und geänderte Datensätze updaten.

Ich möchte sodann protokolliert haben, welche Datensatzfelder (sprich Artikeleigenschaften) geändert haben und welche Datensätze neu hinzugekommen sind.

Dieses Protokoll soll ausgewertet und dem Enduser zur Verfügung gestellt werden. So muss er sich nur mit den geänderten und neuen Artikeln beschäftigen, zum Beispiel, um neue Etiketten zu drucken.

Das Mengengerüst:
- Anzahl Lieferanten: ca. 10 (steigend)
- Anzahl Artikel pro Lieferant: 100 - 15'000
- Anzahl ARtikel insgesammt: ca. 50'000 (steigend)


Zur Frage:
Ist dafür diese Tool geeignet bzw. welche Arbeiten kann dieses Tool übernehmen?

Besten Dank für eure Infos.
Thomas
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 2 Monate her #1084

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
Hallo Herr Altermatt,

dafür gibt es mehrere Möglichkeiten. Ich schildere hier mal eine Möglichkeit wie das umzusetzen ist ohne dass Tabellenänderungen (zusätzliche Felder) notwendig sind. In der Anlage finden Sie ein kleines Beispiel dazu.

Im Beispiel wird ein zusätzliche Datei Protokoll.txt über den File Heater geschrieben. In die Datei wird pro Datensatz die ArtikelNr, Datum und Uhrzeit der Änderung sowie ob es ein Insert oder ein Update war, festgehalten.

Um zu prüfen ob es sich um eine Neuanlage (INSERT) oder eine Aktualisierung (UPDATE) handelt wird für jede Zeile über den SQL Heater ein "select count (*) from t_Artikel where ArtikelNr = "ArtikelNr der aktuellen Zeile" ausgeführt. Die Rückgabe wird dann über einen IF-THEN-ELSE Heater geprüft. Ist die Rückgabe 0 handelt es sich um eine Neuanlage, ist die Rückgabe größer 0 liegt eine Aktualisierung vor. Die anderen Heater formatieren dann nur noch den Ausgabetext, der dann über den File Heater in die Protokolldatei geschrieben wird.

Hinweis: Die Protokolldatei wird nicht im Testmodus geschrieben!

Anhang Import_Update_Protokoll.zip nicht gefunden

Anhang:
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 2 Monate her #1085

  • Altermatt Thomas
  • Altermatt Thomass Avatar
  • Offline
  • New Member
  • Beiträge: 10
Besten Dank, Herr Stark
Ich werde die Anwendung prüfen.
Gruss, Th.Altermatt
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 1 Monat her #1098

  • Altermatt Thomas
  • Altermatt Thomass Avatar
  • Offline
  • New Member
  • Beiträge: 10
Hallo Herr Stark

Ich versuche mich wieder an Ihrem Programm. Ich habe Ihre Vorlage mit einer IF-THEN-ELSEIF - Struktur ergänzt. Ein Erfolgserlebnis :-)

Die Ausgabe in die Protokoll-Datei möchte ich einschränken, da sonst viel zu viele Datensätze 'nutzlos' darin stehen. Ich möchte nur echte Updates in die Datei schreiben lassen.

Beispiel:
19.10.2012 10:00;Neuanlage;999;
19.10.2012 10:00;Update;123;Artikel;Maus2;Maus1;
19.10.2012 10:00;Update;123;Preis;7.88;8.11;

Bei der Neuanlage nur die Artikelnummer.
Bei Updates zur Artikelnummer zusätzlich <Wert_ALT> und <Wert_NEU> und den zugehörigen Spaltennnamen.

Ich bin noch am Ueberlegen, was ich machen soll, wenn ein Artikel nicht mehr in der READ-Datei ist. Das aktuelle Datum als Ablaufdatum in die DB schreiben?

Wenn obige Protokoll-Struktur nicht möglich ist: ist es möglich, nur echte Updates zu protokollieren?

Besten Dank für Ihre Hilfe.

Freundliche Grüsse aus dem sonnigen Basel
Thomas
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 1 Monat her #1099

  • Altermatt Thomas
  • Altermatt Thomass Avatar
  • Offline
  • New Member
  • Beiträge: 10
Hallo Herr Stark

Ich habe es konnte den MwST-Code in den MwSt-Wert umwandeln. Bin aber gescheitert beim Versuch, bei Preisgleichheit (Layer Gleichheit) einen entsprechenden Text auszugeben.

Einen unterschiedlichen Preis hat der Artikel '123'.

Können Sie mir da bitte weiter helfen?
Mein Versuch im Anhang.

mfg, Thomas
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 1 Monat her #1100

  • Altermatt Thomas
  • Altermatt Thomass Avatar
  • Offline
  • New Member
  • Beiträge: 10
Habe noch schnell eine Fehlermeldung gesehen. Falls der Anhang nicht übermittelt wurde, hier die Datei im zip-Format.
mfg, Thomas

Anhang Prot_3.zip nicht gefunden

Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 1 Monat her #1101

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
Hallo Herr Altermatt,

ich hab Ihre Definition etwas angepasst. Bei der Prüfung ob der Preis bereits vorhanden ist habe ich lediglich die Formatierung angepasst, der Preis wird jetzt ohne Tausendertrennzeichen sowie mit Punkt als Dezimaltrennzeichen formatiert. Schauen Sie sich dazu einmal den Format Heater sowie das Parameterformat des Parameters "rPreis" an. Hinweis: Die Preise aller Produkte sind in der CVS Datei sowie in der Access Datebank.mdb identisch!

Zum Protokoll) Dazu habe ich Ihre Definition ebenfalls etwas angepasst. Bei Update wird der Alte Preis sowie der Neu Preis ausgegeben. Bei Insert wird lediglich die Artikelnummer ausgegeben. Anmerkung: Was nicht geht bzw. nur schwer durchführbar ist nur wirklich geänderte Werte zu Protokollieren!

Hinweis: Aufgrund Ihrer Anforderung plane ich eine komfortablere Protokollfunktion in den FlowHeater zu integrieren. Ca. Anfang nächsten Jahres könnte es soweit sein.

Anhang protokoll.fhd nicht gefunden

Anhang:
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 1 Monat her #1114

  • Altermatt Thomas
  • Altermatt Thomass Avatar
  • Offline
  • New Member
  • Beiträge: 10
Hallo Herr Stark

Für meinen Artikelabgleich habe ich in einem separaten Layer einige IF-THEN-Anweisungen eingebaut. Und es solle noch mehr werden.

Ich denke, mit einem Heater NET-Script würde ich besser fahren.

Wie müsse ein solchen Script in VB ausschauen?

mfg, Thomas

Anhang produkte.fhd nicht gefunden

Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 1 Monat her #1115

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
Hallo Herr Altermatt,

ich habe in Ihrem Beispiel das Ganze mal für die Artikelbezeichnung über einen .Net Script Heater durchgeführt. Hier das VB.NET Skript das verwendet wurde.
Achtung: Mangels Testdaten nicht getestet!
Public Function DoWork() As Object

  Dim ArtNr as String
  Dim ArtBez as String

  ' 1. Eingangsparameter = ArtikelNr
  ArtNr = InValues(0).GetString()

  ' 2. Eingangsparameter = Artikelbezeichnung
  ArtBez = InValues(1).GetString()

  ' Zugriff auf den Write (Access) Adapter
  Dim write as AccessAdapter
  write = AdapterWrite

  ' SQL Select aufbauen
  Dim SQL as String
  SQL = "select Bezeichnung from Produkte where "
  
  SQL = SQL + "ARTNr = '" + ArtNr + "' AND "
  SQL = SQL + "Bezeichnung = '" + ArtBez + "'"

	
  Dim result as Object
  ' SQL Statement ausführen
  result = write.Execute(SQL, true) ' SQL ausführen, 2. Parameter true = mit Rückgabe

  ' Rückgabe prüfen
  If result is Nothing Then
    DoWork = "Ja"
  Else
    DoWork = "Nein"
  End if

End Function
Sie benötigen für jedes Feld einen .Net Script Heater sowie oben stehendes VB Skript. Im Skript müssen Sie die Tabellenfelder anpassen die Sie abfragen möchten sowie müssen Sie darauf achten, dass Sie bei der SQL WHERE Bedingung die richtige Formatierung (Zahlen, Datum, String) verwenden. Das nimmt Ihnen bei der Datenbank Lookup Variante der Lookup Heater anhand der Eingehenden Datentypen ab!

Anhang produkte-20121105.fhd nicht gefunden

Anhang:
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 4 Wochen her #1120

  • Altermatt Thomas
  • Altermatt Thomass Avatar
  • Offline
  • New Member
  • Beiträge: 10
Vielen Dank, Herr Stark

Ich habe da einiges machen können.

Ich stehe nun vor folgendem Problem:
Auf der READ-Seite habe ich den String "1234567890123,12345678,,"
Der String symbolisiert 3 Barcodes. Ich möchte nun einen .NET Script -Heater schreiben, der mir den String in 3 separate Spalten abfüllt.

Ich habe einen Heater bis auf des Grundgerüst auskommentiert:

Public Function DoWork() As Object
Dim EAN as String

' 1. Eingangsparameter = EAN 3x
EAN = InValues(0).GetString()

' Rückgabe
DoWork = EAN

End Function

Ich erhalte die Fehlermeldung:
Index was outsite the bounds of the array.

Was bedeutet diese Meldung? Ausserhalb der Indexgrenzen - klar - aber ??

Vielen Dank für die Hilfe.

Gruss, Thomas
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Anwendungsmöglichkeit 4 Jahre 3 Wochen her #1122

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1101
Hallo Herr Altermatt,

die Meldung bedeutet, dass Sie mit der Anweisung

EAN = InValues(0).GetString()

auf den ersten Inputparameter zugreifen wollen und sie keinen Eingangsparameter mit dem Heater verbunden haben.

Sie können das über folgenden Code etwas eleganter abfragen/melden.
If InValues.Length = 0 Then
    Throw new Exception("Keine Eingangsparamter vorhanden!")
  End If
Um die 3 EAN Codes auf 3 Einzelwerte aufzuteilen können Sie auch den String Split Heater (3x) verwenden!

PS: Bitte eröffnen Sie für neue Themen jeweils einen separaten Thread, Danke.
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.100 Sekunden