variable Daten fest ins Programm integrieren

  • VB.NET

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Eierlein.

    variable Daten fest ins Programm integrieren

    Hallo,
    ich bin Anfänger und soll mal was "kleines" für meinen Bruder programmieren.
    Werte aus einer Access-DB (kann auch Excel- oder csv sein) sollen beim Programmerstellen fest in das Programm integriert werden. Die DB soll aber aus manipulationsgründen nicht mitgeliefert werden. Auch soll es unterschiedliche Variante des Programms geben, jeweils mit anderen Datenbestand.
    Im Programm selber soll aus den 5 Spalten ein 6.ter Wert berechnet werden. Verarbeite also alles Zeilenweise.
    Auf Empfehlung eines Kollegen sollte ich Dataviewgrid nehmen.
    Das ist mir aber zu schwer. Außerdem meckert er mir meine Datenbank beim erstellen an, bin nicht der Besitzer u.ä. Erfahrungen mit der intgr. SQL-DB habe ich auch nicht
    Wie würdet ihr es am einfachsten machen?
    Gibt es irgendwo ein Howto mit Beispiel was nur noch erweitert/umgerüstet werden muß?

    Gruß
    Oschgar
    Hi,

    was meinst du damit, dass die Daten am Programmanfang integriert werden sollen?
    Wenn du sie zum Programmstart aus ner DB einlesen wolltest, müsste die DB logischerweise für das Programm erreichbar sein, was du ja offenbar nicht willst. Aber wenn die die Werte nicht direkt in den Code schreiben willst, musst du sie ja irgendwie inner Datei oder ähnlichem ablegen. Wenn es nicht zu viele Daten sind, böte sich vielleicht XML an, weil die Datenbankfunktionalität von VB dieses Format wie eine DB einlesen kann.
    Schau dir doch mal die Tutorials vom Erfinder des Rades an, da ist auch eine Lösung bei, die keine Datenbank im Hintergrund braucht.
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D
    Sollen die Daten Bestandteil des Programms sein?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,
    ja sie sollen Bestandteil des Programms sein. Kann man sich vielleicht so vorstellen
    -Es werden die Wetterdaten von München für jemanden aus München im Programm integriert. Jetzt kann er sich selber Durchschnitte, Max- Min usw. anzeigen lassen.
    -Das gleiche Programm aber mit Daten für Berlin geht an jemand nach Berlin usw.
    Hoffe, es war verständlich

    Gruß
    Oschgar
    Settings kann man editieren, also programmier die Daten hart in das Programm
    oder pack sie als Text oder so in die Ressources.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,
    es sind keine Wetterdaten, war nur Beispiel. Von mir aus auch Lottozahlenhistorien, z.B. aus D, A, CH usw. Also für jedes Land einzeln.
    Ja, die Daten sollen "hart gecodet" werden. Aber
    -ich bin frisch in VB, weiß also nicht richtig wie am effektivsten
    -ich nicht 1000 - 4000 Daten als Konstanten jedesmal neu definieren will
    Am besten wäre es, ich könnte eine Exceldatei als Quelle angeben und die Daten werden dann dauerhaft im Programm integriert.

    Danke und Gruß
    Oschgar

    ErfinderDesRades schrieb:

    verstehe ich nicht.
    Ich habe die Primärfrage beantrwortet und keinen Kommentar kommentiert. :D
    @Oschgar: Was Du da schreibst, ist viel Kauderwelsch.
    Leg Dich mal fest, was Du eigentlich willst, dass wird Dir auch geholfen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,
    denke jetzt ist alles klar?
    -Daten hart im Programm
    -Daten werden am besten während des kompilierens aus einer Exceldatei automatisch ausgelesen, muß also vorher nur Dateipfad oder/und Namen der Quelle ändern.

    Gibts andere Möglichkeit als DataGridView? Oder gibts irgendwo ein einfache Anleitung für "Einäugige"?

    Gruß
    Oschgar

    Oschgar schrieb:

    Daten werden am besten während des kompilierens aus einer Exceldatei automatisch ausgelesen, muß also vorher nur Dateipfad oder/und Namen der Quelle ändern.
    entweder du machst witze, oder du willst so einen compiler selber schreiben.

    Gibts andere Möglichkeit als DataGridView?
    Wer empfahl Datagridview, und wie sollte das gehen?
    Aha,
    ich entnehme deinen Worten , es scheint also nicht so zu gehen wir ich gehoft hatte.
    Frage
    -geht das nur mit Excel nicht oder geht es allgemein nicht?

    Also muß ich irgendwie (automatisch, extern) Konstanten erzeugen und dann in das Projekt reinkopieren und kompilieren.

    Oder gibts noch andere Möglichkeiten?

    Gruß
    Oschgar
    Wie schon gesagt, wenn Du genau eine temporäre Datei hast, in der Deine Daten stehen, pack sie als File in die Ressourcen.
    Extrahiere sie bei Programmstart, lies die Daten aus und lösch die temporäre Datei.
    Und wenn die Datei ein geeignetes Format hat, kannst Du sie mit einem Einzeiler in eine DataTable einlesen:

    VB.NET-Quellcode

    1. MyDataTable.ReadXml(PFADNAME)
    Fertich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ok, so kann ich es machen. Habe zwar noch nie eine xml erzeugt aber mal schauen(lesen).

    Zu der Frage mit dem DataGridView. Es hatte mit ein Kollege empfohlen als wir mal darüber geredet hattet. So wie ich aber jetzt gelesen habe reicht ein ListView aus.

    Danke und Gruß
    Oschgar
    Falscher Ansatz?

    Programm EINMAL kompilieren. Daten als Textdatei mitgeben. Ist damit genau so sicher wie das "feste" einkompilieren, aber deutlich besser zu handlen. Falls doch Paranoia: Jede Datendatei mit individuellem Passwort verschlüsseln, das der User beim ersten Programmstart eingeben muss.

    Oschgar schrieb:

    reicht ein ListView aus.

    Wenn Du die Wahl hast zwischen DataGridView und ListView:
    Immer das DataGridView wählen.
    Wenn Du nicht die Wahl hast, das DataGridView wählen.
    ListView :thumbdown:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Oschgar schrieb:

    Habe zwar noch nie eine xml erzeugt aber mal schauen(lesen).

    ist sicher schön, sich in Xml auszukennen, aber für Rods Ansatz nicht erforderlich.

    VB.NET-Quellcode

    1. MyDataTable.ReadXml(PFADNAME)
    ist alles, was du können mußt bezüglich Xml.

    Ups - vergessen:

    VB.NET-Quellcode

    1. MyDataTable.WriteXml(PFADNAME)
    natürlich auch.

    Allerdings führt der Ansatz so, wie er da steht ins Gewurstel mit untypisierten DataTables - da müsste also jeder Zugriff über einen String-Schlüssel erfolgen, und der Wert gecastet werden.
    Sinnvollerweise schriebe man sich zu diesem Behufe einen Wrapper, der die String-Schlüssel von vornherein kennt, und auch auf die richtigen Typen zu casten weiß.

    Noch sinnvollererweise nähme man ein typisiertes Dataset - da hast du deinen Wrapper. Rods Ansatz änderte sich dadurch zu

    VB.NET-Quellcode

    1. MyDataSet.ReadXml(PFADNAME)
    2. MyDataSet.WriteXml(PFADNAME)

    Aber da sind wir wieder genau bei der Dataset-Variante von Übersicht: Strategien zum persistieren von Einstellungen

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

    Also muß ich irgendwie (automatisch, extern) Konstanten erzeugen und dann in das Projekt reinkopieren und kompilieren.


    Wenn du die Daten fest in der EXE haben willst, musst du das so machen.

    Du erstellst eine csv-Datei.

    Dann bereitest du die Daten mit einem Hilfsprogramm für dein Hauptprogramm auf, speicherst sie und kopierst sie anschließend in deinen Quellcode.
    Mit den Daten aus dem Array kannst du dann weiterarbeiten.

    Beispiel für das Hilfsprogramm (richtiger Basic-Code):

    VB.NET-Quellcode

    1. DIM i AS INTEGER
    2. DIM zeile AS STRING
    3. OPEN "data.csv" FOR INPUT AS #1
    4. OPEN "data.txt" FOR OUTPUT AS #2
    5. PRINT #2, "DIM DataArr( )" 'Hier noch die richtige Dimension eintragen
    6. PRINT #2,
    7. WHILE NOT EOF(1)
    8. LINE INPUT #1, zeile
    9. PRINT #2, "DataArr("; TRIM$(STR$(i)); ") = "; CHR$(34); zeile; CHR$(34)
    10. i = i +1
    11. WEND
    12. CLOSE


    Im Anhang das Programm zum testen.
    (data.csv erzeugen, exe ins gleiche Verzeichnis kopieren und starten. Den Inhalt der erzeugten data.txt dann in dein Programm kopieren. DIM-en des DataArr nicht vergessen).
    Dateien
    • orschgar.exe

      (9,73 kB, 111 mal heruntergeladen, zuletzt: )