Bachelorarbeit - Wirtschaftsinformatik

So wie ich das verstehe wäre es also auch komplett in der DB berechenbar und dann als Ausgabe an Excel. Hier muss ich sagen das Zinsrechnung und Näherungen etc. theoretisch umsetzbar sein sollten. Aber hier ist sollte man sich vieleicht nicht als Neueinsteiger gleich an die komplette Neuberechnung machen. Vieleicht gibt es einen Experten in eurem Unternehmen der sich mit der Materie auskennt und, im Idealfall, auch für die Excel Berechnungen veranwortlich zeichnet. Dann könnte man mit dessen Unterstützung alles nach SQL portieren.

Als alternative sperrt man die komplette Excel Berechnung für jegliche Benutzereingabe und schiebt wirklich nur Rohdaten rein. Ich würde aber persönlich lieber mit gut strukturierten Triggern und Tabellen arbeiten als mit Excel Formeln.

Die Versionierung wird viel Arbeit und Überlegungen erfordern. Darüber muss man sich von Anfang an gedanken machen.
 
Werbung:
Und genau weil ich "Neueinsteiger" bin habe ich die Berechnung auch aus meinem Exposé gestrichen.

Also klar, wenn mir einer von euch im Verlauf der Arbeit so ca. erklärt wie ich das hinbekommen kann, dann würde ich das natürlich machen. Das spart immerhin einen Import der berechneten Daten.

Aber zuerst muss ich mal lernen wie ich überhaupt Daten von Excel in die Datenbank bekomme. Kann mir da jemand was zu sagen? Ich verlasse mich natürlich nicht ausschließlich aufs Forum. Ich schaue auch, dass ich da was in Büchern etc. finde. Aber wenn jemand beim Lösungsweg hilft, der sich schon etwas mit meiner Arbeit beschäftigt hat, dann ist das natürlich viel mehr wert. =)
 
Such mal nach OPENROWSET, das ist ein Weg aus TSQL heraus direkt auf Excel zuzugreifen. Eleganter wäre aber eine automatisierte Import Lösung a la DTS. Das ist allerdings nicht in der SQL Express 2008 dabei, nur in 2005. Kann aber trotzdem installiert werden (lad SQL Express 2005 runter und installiere nur DTS). Leider kann es nur in einer Express Version nicht automatisiert laufen, bitte nochmal googeln wann man das voll nutzen kann. Scheint mir aber eine sehr solide Lösung zu sein und viel Arbeit zu sparen, also eventuell einen Lizenzkauf wert.
 
Die Express Version habe ich ja nur privat installiert um mal zu sehen wie das ganzen aussieht. Im Unternehmen verwende ich die volle Version von 2008.
 
>Mit C#/.Net-Framework habe ich noch keine Erfahrung. Welche Vorteile siehst du bei einem solchen Frontend im Gegensatz zu Excel?

Ich sehe hier den Vorteil, dass du genau steuern könntest! Du kannst dir eine Lösung genau hingeschnitten auf den Kundenwunsch programmieren und somit die größte Kundenzufriedenheit und die geringste Fehleranfälligkeit erzielen.
Da du aber noch keine Erfahrung damit hast, sowie mit Datenbanktriggern (TSQL) usw. und dein Projekt jedoch sehr zeitkritisch ist, würde ich auf die fehleranfällige Excellösung plädieren.

Deiner neuesten Beschreibung nach, ist es bereits sehr Fehleranfällig, somit kann dein zukünftig umgesetztes Projekt nur besser werden!!! ;-)

Inwieweit diverse Dinge in Excel zu realisieren sind, kann ich leider nicht beantworten, da ich sehr wenig mit Excel arbeite. Gewisse Dinge könnten sicherlich auch in Excel automatisiert (Zellen automatisch befüllen) werden, denn viele Dinge lassen sich mit ein paar Zeilen VBA-Code dennoch lösen, aber ob dies für dein Projekt ausreicht, kann ich leider nicht beantworten.
Die Frage ist, wenn dus in Excel hinbekommst, ob am ENDE der Kunde wirklich damit zufrieden ist, oder ob er sich eine benutzerfreundlichere und zugleich weniger fehleranfällige (Fehler werden vom Frontend abgefangen) Lösung erwartet hätte.


In MSSQL 2008 kannst du relativ einfach (wenn die Excelsheets IMMER die gleichen bleiben, und der Name sich NICHT ändert) mittels Wizard ein Packet erstellen, welches auf Knopfdruck oder zeitgesteuert läuft und die Daten aus einer Excel-Datei in die Datenbank importiert.

(start des Wizards siehe Screenshot anbei)

Lg
 

Anhänge

  • FORUM.jpg
    FORUM.jpg
    74,2 KB · Aufrufe: 6
Ich brauch mal einen Tipp.

Ich bin gerade dabei das ER-Modell zu erstellen. Nun hänge ich ein Wenig an der "Stückliste".

Ich versuche mal grob zu schildern worum es geht:

In der Berechnungdatei gibts es hinterher nur 20 Platzhalter für sogenannte Systeme.
Ein System besteht aus maximal 5 Modulen. Die Mudule sind fest, jedoch kann es auch Systeme geben, die nur (z.B.) 2 dieser Module verwenden.
Ein Modul besteht nur Einzelteilen oder Einzelteilen und zusätzlich Baugruppen, welche aber auch aus Einzelteilen bestehen.

Sagen wir, ein Modul kann aus bis zu 20 Einzelteilen bestehen, muss ich dann in der Tabelle "Module" 20 Positionen für Einzelteile reservieren oder geht das auch anders zu lösen? Wenn es einen anderen Weg geben solle (ich kann mir vorstellen, dass es einen Datentyp gibt der eine Liste darstellt) dann muss ich aber auch gleichzeitig die Anzahl jeden Einzelteils festlegen können.

Eine weitere Frage ist: Kann ich später z.B. ein System anzeigen lassen, so dass ich dann eine Gesagtübersicht der gesamten Unterkoomponenten erhalte? Also ne richtige Baumansicht?

Hab heute ne Präsi gehabt in der ich so alle Lösungeen vorgestellt habe, die ich mir vorstellen kann. Ich schon ein wenig mit dem SQL Server den ich privat installiert habe herumgespielt. Das erstellen der Tabellen und Relationen finde ich mit dem Microsofttool eher umständlich. Ich habe dann mal probiert mit Access die Tabellen und Relationen festzulegen um das ganze dann zu exportieren. Es hat zwar wunderbar geklappt, aber evtl. kennt ihr ja einen eleganteren Weg. Gibt es ausser dieser Microsoft Umgebung weitere Admin-Tools die man verwenden kann?

Desweiteren habe ich neben Access und Excel als Frontend mal in LightSwitch reingeschaut. Dieses Programm hat mich echt gut beeindruckt. Ich finde, dass diese Umgebung genau richtig für mich ist. Innerhalb von wenigen Minuten hat man eine Datenbankverbindung und ein paar Masken über die man im gegensatz zu Excel super schnell in Tabellen schreiben kann. Hat jemand schon mit LightSwitch gearbeitet und kann mir da Hilfestellung bei Detailfragen geben?
Ich weiß nur noch nicht genau, ob ich dass Programm von meinem Unternehmen bekomme.

Mein Chef hatte auch plötzlich die Idee, dass man ja auch Freeware (MySQL) in betracht ziehen sollte. Ich hab mich da jetzt schon ein wenig in MSSQL eingearbeitet, hat evtl. jemand von euch gute Argumente für MSSQL bzw. gegenargumente zu MySQL? :D

Ach zu dem Wizzard der im letzten Post erwähnt wurde: Hab ich versucht, jedoch leider eine Fehlermeldung erhalten. Bin aber gerade auf Arbeit und hab ihn nicht mehr im Kopf.

Wie immer: vielen Dank für eure Hilfe!! =)
 
Es gibt keine Datentypen die Listen abbilden, ist in einem relationalen Datenbank Modell auch unüblich. Wenn ein Modul 20 Einzelteile haben kann und jedes Einzelteil in beliebigen Modulen verbaut sein kann dann hast du eine klassische n:m Bezeihung die über eine Zwischentabelle abgebildet wird. Alle anderen Möglichkeiten (für jedes Einzelteil eine eigene Spalte) wiederspricht dem relationalen Datenmodel und ich würde das auch vermeiden solange nicht handfeste Gründe dafür sprechen. Das ist einfach Grundwissen ohne das man nicht anfangen sollte: http://de.wikipedia.org/wiki/Relationale_Datenbank

Natürlich muss dann beim zusammensetzen der Daten für Excel in einem SELECT Statement mehr Aufwand betrieben werden aber von dem alten Excel Tabellen Modell will man ja auch weg und genau dafür gibt es SQL.

Beim Aufbau der Datenbank kannst du auch vorerst gänzlich auf relationen verzichten. Du musst nur Spalten für Primary und Foreign Keys anlegen, die Relationen die die DB verwaltet (CONSTRAINTS) haben eher eine "Schutzfunktion", so das keine Daten gelöscht werden können auf die sich noch andere Daten beziehen etc., sie sind aber am Anfang nur hinderlich beim expirimentieren.

Ein anderes Tool zum Tabellen erstellen kann ich dir leider nicht empfehlen. Die einzige DB wo ich regelmäßig Tabellen selbst erstelle ist unser CRM und da mache ich es auch mithilfe des CRMs. Nur Sichten, Trigger und Abfragen etc. schreibe ich über das SQL Studio und dafür gefällt es mir sehr gut. Es gibt aber sicher viele Alternativen.

MS SQL bietet sich aufgrund der Verbindung zu Excel an und bietet meiner Meinung nach viele gute Funktionen (SQL Studio, DTS). Viele Software Lösungen auf dem mittelständischen Markt nutzen MS SQL, auch grade weil es in der Express Version kostenlos ist. Es ist aber nicht so das man das nicht auch mit MySQL oder Postgre realisieren könnte, genauso wie man vieleicht mit Linux statt Windows als Server arbeiten möchte. MySQL kann mitlerweile viel im Vergleich zu Früher und Postgre mag ich sowieso gerne aber ich arbeite auch in einem MS Umfeld also habe ich kein Problem damit MS SQL zu nutzen.
Die Unterschiede liegen eh im Detail. Bei MySQL kann ich LIMIT nutzen, bei MS SQL muss ich mit TOP arbeiten *würg*. Bei MySQL sind die Fehlermeldungen meist nichtssagend und nutzlos (Ich hab lange nichts damit gemacht, kann sich geändert haben). Das ganze ist wie Mercedes oder BMW, beide Fahren nur eben etwas anders. Da du keine riesigen Datenmengen verarbeiten willst würde ich an diese Wahl nicht zuviel Zeit verschwenden.
 
Hehe, ja die Grundlagen sind mir schon bekannt, jedoch konnte ich mir nicht so richtig vorstellen wie man das in einem Formular bzw. in der Windows-Anwendung darstellt.

MySQL habe ich nun so beschrieben, dass es hauptsächlich für Web-Anwendungen mit einer sehr hohen Zahl von kleinen Abfragen geeignet ist. Der Focus liegt dabei hauptsächlich auf der einfachen Bedienung. Mit MySQL soll man also schnell gute Datenbanken erstellen.
MS SQL bietet hingegen eine hohe Zahl von Extras/Funktionen. Nicht jeder braucht sie, aber auf unterschiedliche Situationen bezogen können sie nützlich sein.

Ich hab mir gestern mal die große Version von MSSQL geladen und installiert.. aber leider noch nicht damit gearbeitet. Ich bin gespannt was die Export-Funktion bietet.
Ich frage mich ob es damit schaffen kann gefilterte Daten direkt in eine Excel-Tabelle zu schreiben. Optimal wäre als nächster Schritt, dieser Funktion mit einer Variablen (der Projektnummer) und einem Button in der Anwendung zu verknüpfen.

Optimal:
Der Anwender hat einen Reiter "Projekt anzeigen". Dort kann er in ein Formularfeld die Projektnummer eintragen. Nun bekommt er alle wichtigen Daten des Projekts angezeigt. Er hat nun die möglichkeit über "Exportieren" eine leere Berechnungsdatei mit den Projektdaten zu füllen.

Unschön:
Ich Exportiere die Daten nicht direkt in die Zellen der Datei, sondern in ein extra Blatt. Dann muss ich noch ein extra Macro für Excel schreiben, welches die Daten den richtigen Zellen zuordnet.

In einem anderen Forum wurde mir empfohlen mich mal über DataGrids zu informieren. Mal sehen das damit zu machen ist.
 
Du kannst die Daten in ein Datenblatt einer Excel Datei importieren und dich in einem anderen Datenblatt darauf per Formel beziehen. Das trennt das ganze schön sauber zwischen Import Daten und Ausgabe / Anzeige, ist aber dennoch in der selben Datei.
 
Ich brauche einen Tipp! :D

In einer Zuordnungstabelle sollen Einzelteile mit Geschäftsjahren in Beziehung gestellt werden. Ich nehme also den Schlüssel aus der Tabelle Einzelteile. Ob ich nun eine extra Tabelle für Geschäftsjahre anlege ist fraglich, es kommt aber aufs selber heraus. Die Kombination aus Einzelteil und Geschäftsjahr soll es natürlich nur einmal geben.

Ich habe nun den Unique Key Jahr/EinzelteilID angelegt. Wenn ich nun einen Datensatz schreibe, welcher bereits aus dieser Kombination besteht, dann erscheint links neben dem Datensatz ein rotes Ausrufezeichen. Speichern lässt es sich jedoch trotzdem.

Kann mir jemand einen Tipp geben, wie ich dieses verhalten ändern kann?
 
Da gibt es mehrere Wege.

1) Eigentlich müsste UNIQUE KEY schon funktionieren, eventuell sucht man dort den Fehler oder muss die Tabelle nochmal neu anlegen.
http://blog.sqlauthority.com/2007/0...y-key-constraints-and-unique-key-constraints/
2) Man bastelt sich einen CHECK Constraint, habe ich aber auch noch nie genutzt.
http://www.mssqlcity.com/Articles/General/using_constraints.htm
3) Du nutzt einen FOR Trigger mit RAISERROR() oder AFTER Trigger mit RAISERROR() und ROLLBACK. Das ist vieleicht nicht so elegant aber schnell geschrieben und kann individuelle Fehlermeldungen ausgeben.

Ich würde nach Möglichkeit mit dem Trigger arbeiten, allerdings musst du ausprobieren, wie dein Eingabeprogram auf RAISERROR() und ROLLBACK reagiert.
 
Danke für die Antwort, habe es aber noch nicht ganz hin bekommen, da ich schon beim nächsten Problem hänge :D

Und zwar geht es um berechnete Spalten.

Hier mal die betroffenen Tabellen:

computed.jpg
computed.jpg


Ein Bauteil besteht aus mehreren Einzelteilen. Dieses Verhältnis wird in ZBauteileEinzelteile abgebildet.
In der Zuordnung von Einzelteilen zu Geschäftsjahren werden z.b. die Kosten der Einzelteile für jedes einzelne Geschäftsjahr bestimmt. In der Zuordnung Baugruppen Geschäftsjahre möchte ich nun die Kosten pro Jahr haben, welche die Gesamtkosten der in dem Bauteil enthaltenen Kosten entspricht.

Ich bekomme jedoch leider die Syntax nicht richtig hin. Kann mir da jemand helfen?
Die Syntax sollte ähnlich lauten wie (zur Vereinfachung nehme ich ausgeschriebene Spaltennamen):
SUM(Einzelpreis) from ZEinzelteileGeschäftsjahre
where Geschäftsjahr.ZEinzeilteileGeschäftsjahre = Geschäftsjahr.ZBauteileGeschäftsjahre,
OrderBy Geschäftsjahr.ZEinzelteileGeschäftsjahre, BauteilID.ZBauteileGeschäftsjahre

Die Syntax ist natürlich falsch.. das soll nur mal darstellen, wie ich mir das ca. denke. Das ist auch nicht der einzige Fall, wo ich eine solche Summierung brauche. Es würde mich also sehr freuen wenn mir jemand behilflich seien kann. Alle computed column beschreibungen die ich finde, sind ohne solche Beziehungen beschrieben und helfen mir leider nicht weiter.
 
In einem anderen offiziellen Microsoft Forum hat man mir gesagt, dass es bei einer berechneten Spalte nicht möglich ist über mehrere Tabellen zu gehen.

Nun habe ich einen View erstellt, welcher mir die korrekten Ergenisse liefert. Nun habe ich das Problem, dass LightSwitch bei jeder Tabelle und jedem View einen Primärschlüssel braucht. Bei den Tabellen ist es kein Problem dort eine ID einzufügen, welche automatisch mitläuft. Beim View habe ich dort noch keien Möglichkeit entdeckt.

Also entweder ich bekomme dort irgendwie einen Primärschlüssel rein oder ich muss die Ergenisse in die Tabelle einfügen, die eh dafür vorgesehen war.
Hat jemand nen Tipp? :)
 
Okay, dass mit dem Primärschlüssel hat sich geklärt, aber ich bekomme den View nicht mit der Tabelle verbunden (in LightSwitch)
Ich brauche also dringend ne Lösung bzw. nen Lösungsansatz, wie ich das Ergenis des Views in die Tabelle schreiben kann.
 
Werbung:
Wiso muss das Ergebnis der View denn in die Tabelle? Ne View ist doch dafür da, Ansichten zu erzeugen.

Ansonsten würde ich mir dir View gleich sparen und einen Trigger die Daten erzeugen lassen.

Zur Not kann man bei Views auch mit SELECT newid() AS pk, * einen Schlüssel faken. Habe ich bei unserm CRM auch gemacht.
 
Zurück
Oben