Gehaltsrechner - Daten aus Excel oder Access auslesen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Guenter.

    Gehaltsrechner - Daten aus Excel oder Access auslesen

    Hallo Gemeinde,

    im folgende erkläre ich nur kurz ein Projekt fürs Studium. Studienrichtung = BWL, Fach = Wirtschaftsinformatik.
    Es soll ein Programm erstellt werden, welches den Nettolohn errechnet.
    Die Berechnungen sind ja nun recht einfache Mathematik.
    Mein Problem ist folgendes: ich lerne Visual Basic 2010 gerade erst kennen. ^^
    Bisher sind nur Grundlagen in C++ vorhanden.
    Zuerst einmal, wären Bücher, Links oder sonstige Hinweise zum erlernen der Sprache prima.

    Was für mich bisher ungeklärt ist, wie ich Daten aus Excel oder Access auslese.
    Was ist da erstmal einfacher? (Excel oder Access)
    Mit welchen Grundbefehlen kann man die Verbindung herstellen, den richtigen Datensatz suchen und ihn im Programm in einer Textbox (oder Label?) ausgeben? Der Wert wird eben für die weitere Berechnung benötigt.

    Zum Schluss soll das Programm die errechneten Daten (also den Nettolohn und wenn möglich, auch alle eingegeben Werte) irgendwie weitergeben. Meine Idee ist hier, die Daten in eine txt oder Excel zu schmeißen. Jemand eine andere / bessere Idee?
    Auch hier wäre ein Tipp für die notwendigen Grundbefehle sehr hilfreich.

    Vielen Dank für eure Freizeit :)
    Gruss guenter

    Edit: Ok es ist also keine Grundlage, dann warte ich doch noch auf Antworten ^^

    Nach dem, was du schreibst, ist es nicht wirklich eine Grundlagen-Frage.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Guenter“ ()

    sowohl Excel als auch Access sind aufwändig. Man kann es sogar einheitlich lösen, und das Excel-Workbook über einen spezifischen ConnectionString auslesen, als seis eine Datenbank.
    Nur sind Excel-Tabellen meist anders gestaltet als reine DB-Tabellen, und da müsste man dann noch mehr oder weniger aufwändig aussieben.
    Wenn du frei wählen kannst, wie du die Daten speicherst, nimm ein typisiertes Dataset. Das brauchst du sowieso zur Datenverarbeitung (Datensatz suchen, Netto ausrechnen), und das kann sich auch selbst auf Platte speichern, mit Dataset.WriteXml/.ReadXml.

    Die Verwendung von Datasets ist überaus elegant, insbesondere die Anbindung an DatagridViews.

    allerdings ist das zunächstmal ziemlich viel Stoff zu lernen.

    Zum Lernen gibts aber keine Alternative, denn Datenverarbeitungen ohne ein adäquates Datenmodell im Client sind einfach Schrott - selbst wenn mans so hingefrickelt hat, dasses die Anforderungen mit Ach und Krach erfüllt.

    Gugge "DatasetOnly" auf Movie-Tuts. Das geht aber über deine Anforderung hinaus, denn es demonstriert schon die Bearbeitung eines Datenmodells mit 2 verknüpften Tabellen.
    Du bräuchtest ja nur einen Simpel wie Daten laden, speichern, verarbeiten
    Na spitze, danke erstmal für die Antwort.

    Da muss ich noch einiges Lernen. Vielleicht stell ich mir das ganze Projekt auch zu schwer vor und der Dozent will gar nicht so komplizierte Dinge sehen ^^
    Ich häng mich dann mal rein in den Lesestoff.

    Gruss guenter
    hallo gemeinde,

    hatte eine weile keine zeit, habe aber gestern ein wenig probiert.
    habe unten einmal den quellcode gepostet, den ich bisher habe.
    im prinzip funktioniert es erstmal, ohne fehlermeldung ^^
    beim benutzen des button zwei, soll sich also das excelblatt öffnen.
    danach soll etwas ausgelesen werden (IdentNr).
    der ausgelesene wert soll übergeben werden, sagen wir in ein textfeld in der form. danach wird die form 3 geöffnet. auch dort hätte ich gern den wert, den ich vorher in form 2 ausgelesen habe.

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. Dim Mitarbeiter As Object = CreateObject("Excel.Application")
    3. Mitarbeiter.application.workbooks.Open("C:\Dokumente und Einstellungen\***\Desktop\Mitarbeiter.xlsx")
    4. Mitarbeiter.application.sheets(1).Select()
    5. Dim Zeile As String = Mitarbeiter.application.cells().ToString
    6. FileClose()
    7. Form3.Show()
    8. End Sub


    mein problem ist nun, das auslesen der identnr.
    die tabelle ist so aufgebaut, das in spalte a die bezeichnungen stehen wie: identnr, name, vorname, usw.
    ab spalte b, folgen dann die einzelnen mitarbeiter.
    hat jemand eine idee, wie ich die nummer auslese (dreistellige nummer: 001, 002, usw) und diese dann auch weiterhin behalte?

    eine weitere möglichkeit, die mir gerade eingefallen ist: wäre es einfacher bzw. überhaupt möglich, den wert, den ich in ein textfeld schreibe zu lesen, danach in der exceltabelle zu suchen und dann einfach zu sagen: ok der wert ist vorhanden.

    gruß
    hallo gemeinde,

    ich habe mich nun länger mit dem thema beschäftigt. hier der stand:

    VB.NET-Quellcode

    1. Imports System.Data.SqlClient
    2. Public Class Form2
    3. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    4. Dim MyConnection As System.Data.OleDb.OleDbConnection
    5. Dim DataSet As System.Data.DataSet
    6. Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
    7. MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Users\***\Desktop\Mitarbeiter.xlsx';Extended Properties=Excel 12.0;")
    8. MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Tabelle1$]", MyConnection)
    9. MyCommand.TableMappings.Add("Mitarbeiter", "Tabelle1")
    10. DataSet = New System.Data.DataSet
    11. MyCommand.Fill(DataSet)
    12. DataGridView1.DataSource = DataSet.Tables()
    13. MyConnection.Close()
    14. End Sub
    15. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    16. Form1.Show()
    17. Me.Close()
    18. End Sub
    19. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    20. Form1.Hide()
    21. End Sub
    22. End Class


    Im Text farblich markiert, ist nun die Fehlermeldung:
    OleDBException wurde nicht behandelt. Installierbares ISAM nicht gefunden.

    Ich vermutete erst den Provider dahinter, aber das übersteigt dann doch meine momentane Vorstellungskraft. ^^
    Bitte um Hilfe

    Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Guenter“ ()

    ok, habe das excel als 97-2003 gespeichert.

    VB.NET-Quellcode

    1. MyConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Users\***\Desktop\FH\Mitarbeiter.xls; Extended Properties=Excel 8.0;HDR=NO")


    der fehler taucht immer noch an selber stelle auf.

    mir fiel gerade auf, ich habe nur eine excel 2010 starter version. möglicher weise scheitert es schon daran, was ich nicht hoffe.

    gruss

    endlich gelöst

    seit dem wochenende ist es soweit. ich habe es geschafft.

    VB.NET-Quellcode

    1. Public Function ExecuteSQL(ByVal pSQL As String, Optional ByVal pPNR As String = "0") As DataTable
    2. Dim MyConnection As System.Data.OleDb.OleDbConnection
    3. Dim DataSet As System.Data.DataSet
    4. Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
    5. MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source= 'mein pfad' .xls;Excel 8.0;HDR=YES")
    6. MyCommand = New System.Data.OleDb.OleDbDataAdapter(pSQL & " where Personalnummer LIKE '%" & pPNR & "'", MyConnection)
    7. MyCommand.TableMappings.Add("Table", "Tabelle1")
    8. DataSet = New System.Data.DataSet
    9. MyCommand.Fill(DataSet)
    10. ExecuteSQL = DataSet.Tables("Tabelle1")
    11. MyConnection.Close()
    12. End Function


    so, das funktioniert bei mir prima. es is eine globale abfrage, die ich in jeder form anwenden kann. wie sich rausstellte brauche ich es auch in einer anderen form nocheinmal.
    ich hatte ein wenig hilfe von einem freund, welcher mir alles erklärte und beigebracht hat. geschrieben habe ich es dann schon selbst.