![]() |
Datenbank: ??? • Zugriff über: wahlweise
Textdateien fest mit einem SQL-Server verbinden
Mahlzeit Leute,
ich bräuchte mal eure Hilfe bei einer sehr kuriosen Sache. Ich soll ein "Analyseprogramm" über unsere Auslaufartikel erstellen. Als Auslaufartikel sind in unserem Artikelstamm spezielle Kennzeichen hinterlegt. Nun ist unser Warenwirtschaftssystem eine für sich geschlossene Sache. Wir generieren aber jede Nacht Textdateien aus unserem Warenwirtschaftssystem. Diese Textdateien haben immer den gleichen Aufbau, liegen an der gleichen Stelle im Netzwerk und haben immer den selben Namen. Ich sehe für meine Aufgabe nur ein Möglichkeit. In Access kann man ja Textdateien fest mit der Access-DB verknüpfen und so muß ich es wahrscheinlich auch mit einem SQL-Server machen (wir haben hier MS)..... nur wie??? Geht das mit einem MS-SQL-Server nicht? Muß ich einen anderen nehmen und wenn ja welchen (Freeware). Ein Versuch das mit Access zu machen ist kläglich gescheitert. Zwar funktionierte das Prog einwandfrei jedoch ist die Netzwerkbelastung zu hoch und man muß ein wenig Zeit mitbringen wenn man das Programm starten will. Also auf zu neuen Wegen. Danke im voraus Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Da wirst du schon einen Import definieren müssen, damit jede nach diese Textdatei in den SQL-Server importiert wird.
Sollte mit den Bordmitteln (Importfunktionalität + Taskplanung) relativ einfach möglich sein. |
Re: Textdateien fest mit einem SQL-Server verbinden
Habe ich schonmal angetestet... habe mich aber wohl nicht ganz klug dabei angestellt. Werde es jetzt nochmal versuchen.
Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Mmmh. Das mit dem Import klappt ja schonmal aber wie gehe ich die Taskplanung an?? Kann mir dabei jemand helfen. Die Hilfe (beim Server) war bisher nicht so dolle.
Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Hallo Ati,
auf der Konsolebene kannst du mit dem Befehl AT den windows task scheduler konfigurieren. Im GUI geht das über das Shell Object "Geplante Tasks" im Explorer. Grüße vom marabu |
Re: Textdateien fest mit einem SQL-Server verbinden
@marabu ich rede von dem Taskplaner des MS-SQL-Server´s
|
Re: Textdateien fest mit einem SQL-Server verbinden
In dem Fall ist es noch einfacher: GUI Unterstützung im Enterprise-Manager unter Verwaltung :: SQL Server-Agent :: Aufträge.
marabu PS: Server war für mich nicht das gleiche wie SQL Server. Übrigens lässt sich die von dir gewünschte Funktionalität in Verbindung mit DTS auch über den scheduler des Betriebssystems steuern. |
Re: Textdateien fest mit einem SQL-Server verbinden
Habe ich so noch nicht versucht. Jedoch kann ich beim Importieren aus diesem Vorgang eine tägliche Prozedur machen..... müßte doch eigentlich auch klappen, oder?
Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Eigentlich egal, wo du steuerst. Wenn die Datenbank nicht läuft, dann funktioniert auch der AT-gesteuerte Import nicht.
marabu |
Re: Textdateien fest mit einem SQL-Server verbinden
Nächstes Problem. Er importiert das Bestandsfeld als varchar und damit läßt sich keine Summe bilden. Gibt es da einen Trick.
Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Moin,
wenn das Feld durch den Import nicht korrekt eingelesen und angelegt wird, vielleicht so...
SQL-Code:
MfG
SELECT SUM(CONVERT(INT, bestandsfeld))
FROM tabelle Thorsten |
Re: Textdateien fest mit einem SQL-Server verbinden
Zitat:
marabu |
Re: Textdateien fest mit einem SQL-Server verbinden
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Morgen,
da bin ich wieder. Also das mit dem Convert-Befehl scheint in die richtige Richtung zu gehen nur gibt es da eine kleine Fehlermeldung (s.Anhang). Wie die Textdateien aufgebaut sind kann man auch im Anhang sehen. So werden sie jede Nacht aufbereitet und liegen dann im Netzwerk. Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Ati, beim Import deiner Daten hat der Server festgestellt, dass es Spaltenwerte gibt, die ihm eine Konvertierung nach integer unmöglich machen. Anstelle den Eingabefehler zu untersuchen und zu beheben willst du nochmal mit CONVERT probieren das zu erreichen, woran der Server offenbar schon vorher gescheitert ist?
Schau dir mal deine Daten an. In den letzten Feldern taucht gelegentlich völlig unmotiviert ein Minuszeichen auf. Und wenn wirklich "-,3" irgendwo erfasst wurde, dann dürften noch ganz andere Programme Probleme bekommen. Spätestens vor dem Import solltest du die Eingabedaten durch einen Filter laufen lassen, der (a) offensichtliche Fehler korrigiert und (b) alle Fehler protokolliert. Grüße vom marabu |
Re: Textdateien fest mit einem SQL-Server verbinden
Ich habe ja versucht als Kriterium >0 zu setzen. Das wird auch angenommen nur werden trotzdem Minuswerte angezeigt. Das Zahlen wie 114,61 dabei sind hat auch seine Richtigkeit. Und die Minuswerte sind nicht "unmotiviert", sondern werden tatsächlich von unserem WAWI zugelassen. Welche Möglcihkeiten habe ich den noch einen entsprechenden Filter zu setzen.
Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Du verrätst mal wie du importierst und ich sage dir (wenn möglich) wie du Filtern kannst - ist das fair?
|
Re: Textdateien fest mit einem SQL-Server verbinden
Klaro. Ich rufe mir die Hauptseite der Tabellen auf. Rechte Maustaste->alle Tasks->Daten Importieren. Datenquelle=Textdatei und diese auswählen. Lasse dann alles so außer "Erste Zeile enthält Spaltenname" das wird markiert. Trennzeichen =";" bleibt. Dann die DB wählen wohin importiert werden soll (ist ja schon eingestellt). Authentifizierung wird eingegeben. Nächste Maske ->Weiter (hatte auch hier schon versucht zu Transformieren aht aber nicht geklappt). Dann kommen die Eisntellungen das dieser Import jeden Morgen um 7.00 Uhr erfolgen soll. Alles weitere einfach -> Weiter. That´s all.
Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Wenn du dich durch den Assistenten geklickt hast, dann kommt vor dem Festlegen des Durchführungszeitpunktes die Seite mit dem Titel "Quelltabellen und Sichten auswählen". Bei deinem Listeneintrag in der dritten Spalte ist der Schalter für das Transformieren. Der sich dann öffnende Dialog gestattet dir die Spaltenvorschläge des Servers zu überarbeiten. Insbesondere kannst du dort int als Datentyp für deine numerischen Spalten festlegen. Das alleine hilft jedoch noch nicht bei Erfassungsfehlern. Du musst dann noch das Standardskript anpassen, mit dem die Feldwerte von der Quelle zum Ziel übertragen werden. Auf die Skriptanpassung kannst du pfeifen, wenn du die Importdatei vorher durch einen Filter laufen lässt (GREP oder SED).
Viel Erfolg marabu |
Re: Textdateien fest mit einem SQL-Server verbinden
Leider kann ich noch nicht sagen ob es wirklich funktioniert, da ich noch ein kleines Problem habe. Habe jetzt das entsprechende Feld als "FLOAT" importiert. Wenn ich jetzt einen Test mache über einen Artikel der bei uns zweimal im Lager liegt erscheinen beide Positionen.... ich will aber nur die Gesamtzahl. Wie krieg ich das denn hin???
Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Moin,
was meinst du mit Test? Ich gehe mal davon aus, das du eine SQL-Abfrage meinst. Dann brauchst du irgend ein Feld, dass deine Aufträge genau identifiziert (z.B. eine auftrag_id). Nach dieser kannst du dann gruppieren und die Zeilen zählen.
SQL-Code:
Oder habe ich da jetzt was falsch verstanden?
SELECT auftrag_id, COUNT(*) anzahl
FROM tabelle GROUP BY auftrag_id MfG Thorsten |
Re: Textdateien fest mit einem SQL-Server verbinden
Klingt ja so, als ob der Import jetzt funktioniert. Für die Feststellung des Lagerbestandes muss dann aber eine andere Aggregatfunktion verwendet werden:
SQL-Code:
Eventuell muss der Spaltenname in square brackets verpackt werden, wenn er ein Minuszeichen enthält.
SELECT artnr, SUM(lg-bestand) AS lg-bestand
FROM kxlf02 GROUP BY artnr ORDER BY lg-bestand DESC Zitat:
marabu |
Re: Textdateien fest mit einem SQL-Server verbinden
Irgendwas klemmt noch. Ich mußte erst eine Sicht erstellen um gewisse Lagerbereiche auszugrenzen und habe dann zu Testzwecken diese Sicht als Basis genommen. Hier mal der SQL-Befehl:
Delphi-Quellcode:
Wird Fehlerfrei ausgeführt jedoch bekomme ich für den Artikel (130s10) wird zwei Summen.
SELECT TOP 100 PERCENT ARTNR, SUM([LG-BESTAND]) AS [Lager 0]
FROM dbo.VIEW1 GROUP BY ARTNR, [LG-BESTAND] HAVING (ARTNR = '130s10') ORDER BY [LG-BESTAND] DESC Ati P.S. das mit "TOP 100 PERCENT" kommt automatisch |
Re: Textdateien fest mit einem SQL-Server verbinden
Kommando zurück es funktioniert mit folgender Syntax:
Delphi-Quellcode:
Es würde auch folgendes gehen:
SELECT TOP 100 PERCENT ARTNR, SUM([LG-BESTAND]) AS [Lager 0]
FROM dbo.VIEW1 GROUP BY ARTNR HAVING (ARTNR = '130s10') ORDER BY SUM([LG-BESTAND]) DESC
Delphi-Quellcode:
Ich wäre aber nicht ICH wenn es da nicht doch noch ein Problem gibt.... und zwar hat er die "Kommazahlen"
SELECT TOP 100 PERCENT ARTNR, SUM([LG-BESTAND]) AS [Lager 0]
FROM dbo.VIEW1 GROUP BY ARTNR HAVING (ARTNR = '130s10') ORDER BY SUM(DISTINCT [LG-BESTAND]) DESC nicht genommen, so das anstatt 421,42m Wasserschlauch jetzt 42142 dort als Bestand steht!!!!! Muß ich da beim Import noch was ändern? Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Dein Kram läuft auf dem Server - da musst du auch seine Regeln befolgen. Wandle das Komma in einen Punkt um und dann geht das.
marabu |
Re: Textdateien fest mit einem SQL-Server verbinden
Vielleicht stelle ich mich ja ein bischen blöd an aber wie mache ich das. Sowie ich das sehe muß das beim importieren passieren. Habe versucht nach dem Import mit dem REPLACE-Befehl das zu machen, jedoch scheint das Komma da schon nicht mehr vorhanden.
Ati |
Re: Textdateien fest mit einem SQL-Server verbinden
Yeah ich habe es geschafft. Für alle die vielleicht mal ein ähnliches Problem haben hier die Lösung:
Das Transformationskript habe ich wie folgt geändert: DTSDestination("LG-BESTAND")= REPLACE(DTSSource("LG-BESTAND"),",",".") Ich danke Dir und den anderen von ganzem Herzen für Deine Geduld und Hilfe. Ati |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz