PDA

Vollständige Version anzeigen : Format vorgeben bei Inser Into


magic1708
12.06.2012, 13:01
Hallo,

ich Importiere aus einer Excel Datei Daten in einen SQL Server.

Ich möchte hierzu beim Insert Into noch ein Format mitgeben TEXT oder Zahl etc... geht das..

Import verlauf

ExcelDatei--> Verlinken in das Acces FE--> Insert Into in eine Puffer DAtei--> prüfen ---> Wenn alles ok-->Inser Into in SQL Tabelle.

Gruß Matthias

Atrus2711
12.06.2012, 13:16
Insert Into schaufelt Daten von einer QUelle in ein Ziel. Dabei werden die Quell- und Zielspalten ebenfalls benannt. Und diese Spalten haben Datentypen. Das sollte genügen.

Formate sind nur für menschliche Augen relevant. Beim Datenumherpumpen sollten sie keine Rolle spielen.

Worum gehts denn konkret?

hcscherzer
12.06.2012, 13:29
In Ergänzung zu Martin: beim Formatieren geht der nummerische Datentyp verloren, d.h. anschliessend sehen die Werte zwar "nett" aus aber Du kannst nicht mehr mit ihnen rechnen.
Wenn es denn unbedingt sein muss: die Funktionen zur Konvertierung in T-SQL sind CONVERT bzw. CAST (in anderen Sprachen wie PL-SQL oder MySQL sind das wiederum andere).

magic1708
12.06.2012, 13:35
Ich habe das Problem das in der Excel Datei der Dateityp ab und zu nicht dem in der Datenbank entspricht...

Dann wird zwar importiert aber nicht das was es soll... Im letzten Fall wurde eine Zahl importiert sollte aber Text sein !

Atrus2711
12.06.2012, 13:44
Woran man sieht: Excel ist nunmal keine Datenbank. Excel kennt keine Datentypen. Werden Excelsheets nach Access eingelinkt oder importiert, wird der Datentyp jeder Spalte anhand der ersten paar Zeilen gedeutet. Da kann es schonmal zu Fehldeutungen kommen. Man kann die Anzahl der zu deutenden Zeilen einstellen, aber auch dann kann es Fehler geben. Die PLZ ist z.B. numerisch, aber dennoch besser ein Textfeld.

Datentypwahl ist keine Glücks- sondern Entwicklersache und sollte daher von menschlichen Hirnen getroffen werden. Radikal gesprochen: Excel importiert man am besten gar nicht.

Kurzfristige Abhilfe könntest du durch Formatierung aller Excelzellen als Text ereichen. Dann wird auch alles als Text gedeutet. Alternativen sind Umweg über Textdatei (da sind Datentypen wählbar) oder Automatisierung per VBA.

magic1708
14.06.2012, 08:09
Ich habe da noch eine andere Idee bzw Frage.

Ich hole die Daten die ich in dieser Excel Datei habe aus SAP.. Aus dem Programm VA23 über eine Werteinschränkung. Da bekomme ich alle Daten Textmäßig angezeigt.
Diese kopiere ich dann einfach in die Excel Datei und arbeite dann mit Text in Spalten da diese Datensätze alle so gut wie aneinander sind.

Wäre es vielleicht möglich diesen Excel Schritt zu übergehen und die Daten in ein entsprechendes Formular zukopieren?

Gruß Matthias

Danke.

Atrus2711
14.06.2012, 09:22
Je nachdem, was ihr für eine SAP-GUI habt, kann SAP auch direkt Textdateien erzeugen. Die kann Access importieren, wobei man die Datentypen festlegen kann, anstatt sie schätzen zu lassen wie bei Excel. Das wird dein Weg.

ebs17
14.06.2012, 09:23
Daten Textmäßig angezeigt
Wenn Du Daten statt aus Excel aus einer CSV importierst, hast Du dort keine Datentypprobleme, weil es in einer Textdatei nur Text und keine Mechanismen gibt, die Datentypen erkennen wollen.
Mit einer Importspezifikation können dann gezielt gewünschte Datentypen und weitere Informationen zugewiesen werden.

magic1708
14.06.2012, 14:33
Hallo,

ich habe das nun mal so gemacht. (Siehe Bild Anhang)

Ich habe ein Formular erstellt was auf eine die ztbl_Import_Zwischenablage gebunden ist.

Ich habe hinter einen Button das Anfügen am Ende ereignis eingebaut.

Somit muss ich nur auf dem SAP Form alles markieren und dann kopieren und über diesen Button wird es angefügt.

Spricht da was dagegen?

Ich habe es nun paar mal getestet ging auch super.... Sogar mir SAP Link damit ich von diesem Formular in Access auch noch mal in das einzelene Angebot springen kann und dort die fehlenden Werte zuholen (Nettowert)

Jetzt hatte ich noch einiger verändert und plötzlich verschluckt er mir die erste kopierte Spalte...

gehe ich in die Tabelle und füge da direkt an passt es und nur zum Test in Excel macht er es auch richtig. Zu beginn ging es auch in dem Formular...

Stehe grade bissl ratlos da?! Habe ich vll an dem Format oder an den Eigenschaften was verstellen können?


Danke Gruß Matthias

Atrus2711
14.06.2012, 14:38
Was genau in der Zwischenablage landet, kannst du kaum kontrolieren. Daher ja der Rat, es über eine Textdatei zu schleusen. Die kannst du notfalls testweise in einem Editor angucken.

magic1708
14.06.2012, 14:40
Bild 02 so kommt es im Formular raus

Bild 03 so sollte es sein.... So kommt es in der Abfrage an....

Atrus2711
14.06.2012, 14:44
SAP kann beim Kopieren Spalten ausblenden oder auch nicht, Zwischenergebnisse mitnehmen oder auch nicht... du siehst es nicht. Vergiss die Zwischenablage!

magic1708
14.06.2012, 14:46
Sch.....ee.... Das ist aber übelst geil! Mit diesem Formular... Vorallem wäre es in einer Anwednung... Kopieren und klicken einfacher geht es nicht....

:( :(

einfacher geht es nicht.... Zumindest für den Anwender.

magic1708
14.06.2012, 14:48
Das gleiche Formluar in der der Datenblatt ansicht bringt das gewünschte ergebnis

Atrus2711
14.06.2012, 14:52
Ich kann dir nicht folgen.

magic1708
14.06.2012, 14:56
Joa ich bin auch bissl am hin und her denken..

Wenn ich das Formular so wie es ist (Siehe Bild) in die Datenblatt ansicht bringe und dann die Daten anfüge werden alle Daten aus der Zwischenablage korrekt in das Formular übernommen.

Atrus2711
15.06.2012, 09:25
Dann bau das Formular doch in ein Endlosform um, dessen Felder die richtige Reihenfolge von links nach rechts haben.

magic1708
15.06.2012, 09:36
Hallo,

Genau so hatte ich es zubeginn gemacht.

Anfangs funktionierte es prima... Dann hatte er die erste Spalte verschluckt auf diesem Formular.

Ich habe jetzt eine Ufo Lösung gemacht. Button etc. auf dem HF und dieses ENdlosformular auf dem UFo.
Ich teste es mal wie es so auf die dauer geht. Im moment scheint es zulaufen.

Danke :-)