Ersten Schritte VB - Datenbank Fotografie

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von rLz4u.

    Ersten Schritte VB - Datenbank Fotografie

    Hey Leute,mein Name ist Oliver und ich komme aus Niedersachsen, wie alle sehen, bin ich einer der Neuen hier :)

    Ich habe mich vor kurzen mit VB beschäftigt, weil ich als leidenschaftlicher Hobby-Fotograf eine kleine Idee habe, die ich gerne in die Tat umsetzen würde.

    Ich plane eine „Bildergalerie“ bzw. Datenbank zu entwerfen, in der ich alle meine aufgenommenen Bilder bzw. Informationen speichern kann um diese später „via Filter“ gezielt suchen zu können. (ich mag reine Ordnerstrukturen nicht)

    Ein paar Informationen habe ich mir zu der Programmierung schon angeschaut, mir fehlt nur noch der „Komplettüberblick“.

    Da ich in der Vergangenheit bereits mit PHP, C++ und (HTML) gearbeitet habe, wollte ich deswegen die „Profi`s“ mal fragen, welche gängigen Funktionen/Befehle ich denn wohl brauchen werde bzw. in VB eine Verwendung finden.


    Die Umsetzung soll via. SQL und VB erfolgen, so wie ich erfahren habe kann man die SQL-DB auch ohne SQL-Server (wie z.B. XAMMP) auch über eine API laufen lassen, stimmt das?

    Na ja prinzipiell wollte ich fragen ob ihr mich für die ersten Schritte ein wenig an die Hand nehmen könnt, das macht es mir sicher leichter.

    Arbeiten möchte ich mit Visual Studio Express für Windows.

    Hier eine Kurzbeschreibung meiner Idee:1) Fenster #1 (Start): Soll nach Klick auf die Anwendung zuerst eine Benutzerkennungs-Abfrage (Name, Passwort) durchführen. (Daten via. Verbindung zur DB). Eine Registrierung wird nicht benötigt, lediglich die Möglichkeit das Kennwort ggf. zu ändern. (innerhalb des User-Eintrages der DB)


    2) Fenster #2 (Anwendung): Auf dem Fenster sollen die möglichen Optionen untereinander gelistet stehen. (Recherche, Datenpflege, usw.) wo ich entweder Daten „abrufen“ bzw. „einbinden“ kann – alles über unterschiedliche Fenster bzw. "Output" und "Input" Funktionen.

    Recherche
    Datenpflege
    Bildgalerie
    Beenden
    ……………….

    3) Fenster #3 (Recherche): Bei der Recherche soll zu Beginn als erstes ein „Suchfilter“ stehen, der es ermöglicht im Vorfeld zu entscheiden, über welche „2 Kriterien“ man suchen möchte.

    Zum Beispiel nach „Ort“ und „Aufnahmeart“ (aus der Luft, an Land, unter Wasser) oder doch lieber nach Stadt oder Grund der Fotografie (Hochzeit, Urlaub usw.).

    Bitte wählen Sie aus Kriterium#1: (Luftaufnahme, Landaufnahme, Unterwasseraufnahme) Kriterium#2: (Aufnahmeort, Aufnahmezeit usw.)

    Nach der Suche mit den o.g. Kriterien sollen dann (alle) Ergebnisse (via. While-Schleife und eine Abfrage evtl,) ausgegeben werden, so das jedes Ergebnis über ein weiteres Fenster auch einzeln „tiefer“ eingesehen werden kann. (um mehr Informationen zu erhalten).

    3.1) Luftaufnahme – Niedersachsen, Hannover. Bei der „tieferen Einsicht“ sollen alle Eigenschaften zu dem Bild dargestellt werden. Neben regulären „Listeninformationen“ soll auch per „Kästchen o.a.“ dargestellt werden, was zusätzlich zu dem Bildmaterial gemacht wurde (Video, Zeitraffer, Beschreibung usw.)

    Art: Luftaufnahme, Aufnahmeort: Hannover, Bezeichnung: Luftaufnahmen Maschsee

    3.2) Weg zu Bildergalerie

    Zusätzlich soll, hinterlegt über die Datenbank, ein Weg zu einem festen Verzeichnis bestehen in dem „alle“ passenden Bilder eingesehen werden können. Die Erstellung vom Verzeichnis kann ruhig manuell passieren und muss dann über die „Datenpflege“ neben den Informationen angegeben werden. Denn ich glaube "alle" Bilder direkt in der DB über eine ID zu verteilen ist schon ein wenig umfangreich.

    Naja, das ist im Prinzip meine grobe Idee, wie würdet ihr beginnen, wie sollte ich am besten anfangen?

    Danke im Vorfeld für eure Hilfe!!!

    Liebe Grüße
    meine alte bei vielen verhasste Leier: Mach das erstmal ohne Datenbank.
    Du planst da eine überaus aufwändige Oberfläche.
    Grundlage von sowas ist aber ein tragfähiges Datenmodell.
    Also acker dich durch diese Sammlung alles schwierigen und mühsamen: Datenverarbeitungs-Vorraussetzungen
    Und mach dir nichts vor / lass dir nichts vormachen: Leider darfst du keinen einzigen der dort genannten Punkte überspringen.
    Manche der dortigen Punkte sind aber immerhin schnell abgehandelt.
    Mit einer solchen Antwort habe ich zwar nicht gerechnet, trotzdem bedanke ich mich ganz herzlich für den Link zu der Thematik.

    Du planst da eine überaus aufwändige Oberfläche.


    Wieso empfindest du meine Idee als großen Aufwand, ich persönlich erachte es nicht als "sehr ausführlich" -obwohl ich von VB keine Ahnung habe.

    Im Vergleich zu C++ bzw. PHP würde ich hier im Vorfeld eine Datenbank generieren (via. SQL-Workbench bzw. Planungstool), diese in VB einbinden und mit den jeweiligen Funktionen bzw. "Optionen" die Darstellung generieren.

    So wie ich es bis jetzt gelesen habe wird bei dem "Visual Studio Express" eine Menge an Hilfen mitgeliefert, so das man teilweise per "Drag & Drop" und mit Bestimmung der Eigenschaften vieles bereits erledigen kann.

    Der Rest muss halt per Schleife oder IF-Abfrage erfolgen, um die jeweiligen Datensätze aus der Datenbank abzufragen.

    Neues Fenster (open Window) und weiter zu der nächsten Ebene.

    Wie gesagt, ich habe vor ca. 8 Jahren einmal ein CMS für Universitäten gecodet, mit DB-Klasse bzw. Template-System. Da habe ich für alles ca. 2-3 Monate benötigt, mit einer Arbeitszeit von ca. 3-4 Std. pro Tag.

    Da es sich ja eigentlich nur um ein Kleinprojekt handelt reicht ein kleines Datenmodell ja aus, das muss ja Gant-Diagramm sein.

    Ich lese mir die Threads aber mal durch und notiere mir wichtige Funktionen, so habe ich ja sicher schon ein paar Befehle im Hinterkopf :))

    Danke!
    was ich sage: Es ist den Leuten verhasst zu erfahren, dass sie besser erstmal ohne Datenbank fahren. Auch bei dir ists entweder nicht angekommen oder nicht angekommen.
    Es geht auch nicht um ein paar Befehle, sondern eher um Denkweisen: was Databinding ist, wie das VisualStudio tickt, typisierte Programmierung.
    Mit Datenmodell meine ich auch nicht iwie ein Diagramm, sondern ein typisiertes Dataset, in dem tatsächlich ein Modell der Wirklichkeit mittels verschiedener Daten-Klassen abgebildet ist.
    typDataset ist da etwas besonders: Im Designer kann man es als ER-Diagramm anlegen, und im Hintergrund generiert VisualStudio dann die entsprechenden Klassen - also abstrakte Konzeption ist da direkt verbunden mit konkreter Ausprogrammierung.

    Wie kommst du übrigens mit der "Must-Learn"-Sammmlung voran? Punkt 1 schon erledigt, also Visual Studio - Empfohlene Einstellungen gemacht?
    Weil zuvor sollteste nicht eine Zeile Code schreiben, weil die Voreinstellungen verleiten (erzwingen gradezu) zu einem miserablen Programmierstil, und auch die Logik objektorientierter Programmierung wird permanent torpediert, sodass man nicht hineinfindet.

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

    Wer soll den später Zugriff auf Deine Datenbank erhalten?
    Ich sehe hier neben der Technik auch noch jede Menge juristische Hindernisse.
    Meines Wissen ist für die Veröffentlichung von Luftbildaufnahmen eine Behördliche Genehmigung notwendig.
    Wies sieht es mit dem Recht am Bild von Personen und anderen rechten. Z.B. Bilder mit dem Eifell-Turm benötigen auch eine Genehmigung vor der Veröffentlichung.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Ich glaube, die rechtliche Seite ist hier irrelevant, das sieht eher nach einem Bildbetrachter für selbstgeschossene Aufnahmen aus.

    @TE: Unterschätze den Aufwand nicht. Du erinnerst dich an das Web-Projekt, das du damals gemacht hast und schätzt "3-4h/Tag". Ich wette, das war deutlich mehr, besonders am Anfang eines solchen Projekts vergißt man schnell, wo das Bett steht ;) 3 Monate mit 5h/Tag sind auch 300 Stunden Arbeit.

    Letztlich ist die Warnung von @EDR unbedingt ernst zu nehmen. Ich bin seinem Link gefolgt und habe das komplett durchgearbeitet - ich kann mir das leisten, ich programmiere schon etwas länger ;) Jemand, der vor 5 Jahren das letzte mal was programmiert hat, sollte da langsamer rangehen und vor allem das gelernte üben, üben, üben - damit sich das festigt (und plötzlich sind Hausaufgaben, damals mehr als nur gehaßt, plötzlich gar nicht mehr so unsinnig ;)).
    Während der Entwicklung so eines Programms kommen dann weitere Ideen auf, man zeigt das Programm herum und es kommen noch mehr Ideen und Begehrlichkeiten... Selten wird so ein Ding wirklich je fertig. Was das Datenmodell noch wichtiger macht: Das Datenmodell ist das Fundament des ganzen Programms. Und "mal eben das Haus hochheben", um n neues Fundament drunterzuschmeißen, ist nicht so leicht bzw. führt zum Verwerfen und Neubeginn des Projekts.
    Wobei grade wegen der Häuser-Schmeisserei empfehle ich ja ewig, die Datenbank erstmal wegzulassen.
    Denn es kommt nie nie niemals vor, dass ein Datenmodell von Anfang an perfekt konzipiert ist, und kein einziges Mal geändert werden muss. (Wer was anneres behauptet, dem glaube ich nicht ;) )

    Mit typisiertem Dataset - ohne Datenbank - sind diese Fundament-Änderungen zwar immer noch nicht lustig, aber dennoch eindeutig am leichtesten durchzuführen.
    Ok, das ist alles eine menge Holz :)

    Ihr habt ja alle sicher Recht, ohne Basiswissen brauche ich nicht anfangen, deswegen arbeite ich den Thread von EDR auch ab, kostet ja nix beim Kaffee :)

    Die rechtlichen Fragen sind geklärt, Fotografie maättche ich schon eine Weile und ich verdiene mir damit auch nebenbei ab und an über ein Kleingewerbe meine Brötchen.

    Die Geschichte "ohne" Datenbank will ich irgendwie nicht, gerade weil die Datenbank bei diesem Projekt der "Grundstein" ist.

    Wieso ist die Arbeit mit einer Datenbank bei VB so schwer, die läuft doch eh nur im Hintergrund?

    Ich persönlich hätte mir nun eine kleine Datenbank erzeugt, mit den wichtigsten Tabellen, Schlüsseln usw. und hätte dann versuche einzelne Zeilen zu befüllen oder auszulesen, mehr mehr nicht? oO

    Ich lese nun einfach mal..... vielleicht bin ich ja auch auf dem falschen Weg

    Danke nochmal an alle!

    @EDIT: Nun bin ich schon ein wenig am lernen, überlege aber meine "Arbeitsumgebung" ich überhaupt kostenlos nutzen kann? Das gewöhnliche Visual Studio ist ja leider nicht kostenlos, soll ich da auf die Expressversion wechseln oder welche Software könnt ihr mir für den Start empfehlen?

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

    rLz4u schrieb:

    Wieso ist die Arbeit mit einer Datenbank bei VB so schwer, die läuft doch eh nur im Hintergrund?
    Es ist nicht unbedingt schwer, aber es ist halt prinzipiell doppelt gemoppelt, also redundant.
    Die Architektur einer Db-Anwendung ist, dass das Datenmodell im Dataset modelliert ist, und in der DB, dasselbe Dataset, nocheinmal, aber in einer ganz anderen Umgebung, mit einer anderen Sprache, mit anderen Datentypen.
    Und eine .Net-Db-Anwendung arbeitet so oder so immer nur mit dem Dataset, und Datenbank-Zugriff bedeutet nix anneres, als DB und Dataset neu auf Gleichstand zu bringen.
    So geht das, wenn man korrekt vorgeht, und das ist nicht unbedingt tödlich schwierig.
    Aber noch viel einfacher ists, wenn man die Datenmodell-Redundanz einfach weglässt, dann braucht man auch nix zu synchronisieren.

    Es gibt sehr viele Möglichkeiten, von einer DB abzurufen, und die meisten sind Holzweg. Häufig ist etwa, dass die Leuts beim Abruf sich ständig neue DataTables geben lassen. Aber das ist Müll, denn beim Databinding konfiguriert man die Oberfläche auf ein Dataset, mit seinem typisierten Satz typisierter DataTables
    Und aber diese Leute haben viele DataTables, und mit jedem Abruf eine mehr.
    Nun erklär mal einem, der so angefangen hat, und vlt. etwas teilfunktionierendes so aussm Inet abgeschrieben hat, wie er damit noch klarkommen soll.
    Andere wursteln mit Begeisterung mit den primitiven Abruf-Mechanismen herum, Commands und DataReadern. Naja, ein Reader kann doll readen, aber abspeichern kann man damit nix. Also fahrense fort, und wursteln sich Insert-Commands zusammen, und Delete-Commands, und Update-Commands - für all den Krempel findest du Anleitung im INet und in Büchern.
    Wahrscheinlich kämst du damit sogar durch, denn evtl. braucht deine Anwendung nur 3-5 Tabellen. Dann haste dir einen schönen Mist angewöhnt, mit lauter Bugs drinne, und 2000 Zeilen Persistenz-Code, der eigentlich in 30 Zeilen abzuhandeln wäre.
    Ist ja egal, jdfs. in Ado.Net konfiguriert man DataAdapter, und die können dann alles auf einmal: Laden, Speichern, Updaten, Löschen. Und die machen auch alles auf einmal, also wenn ein Adapter updated, dann synchronisiert er gleich die ganze Tabelle.
    DB-Deppen hingegen meinen, sie müssten bei jedem geänderten Daten-Punkt gleich eine Query gegen die DB fahren. Und so weiter und so fort.

    Also nochmal: Hals dir nicht alles gleichzeitig auf, sondern mach erstmal ein Datenmodell - das typisierte Dataset - fertig, und wenns sich als nötig erweist, dann stürz dich in die Datenmodell-Redundanz mit dem Modell-Duplikat inne DB, und dem ganzen Synchronisations-Theater dazu.
    Die große Chance ist halt, dass man beides trennen kann, aber steht dir natürlich frei, diese Chance zu vergeben.

    Nur eins: Die Datenbank ist nicht der Grundstein - das typDataset ist der Grundstein. Und ist Kern der Anwendung, um den sich alles aufrankt.
    Die DB ist nur eine Datensenke, austauschbar durch eine annere Db, oder eben auch durch die Dataset-Datei selbst.
    Wirklich notwendig wird eine DB erst ab irgendeiner Größe - ich schätze da immer 20000 Datensätze, oder was weiß ich, wenn die Dataset-Datei > 20MB wird - aber ich hab auch schon mit 400MB Datasetsen gearbeitet, und hatte zu meiner Verblüffung ühaupt kein Resourcen-Problem.
    Oder bei Multi-User-Betrieb - das geht mit einer Dataset-Datei nicht.
    Aber auch die Multi-Userei ist etwas, was man abtrennenund als letztes anfassen kann und sollte.
    @EDR ist einfach zu weit weg ;) Macht nix. Ich versuche mal etwas Licht in die Düsternis zu bringen.

    @r4lZu: Wenn du die Tutorials von @EDR abgearbeitet hast, dann ist dir sicher aufgefallen, das der gute Mann einfach nur ein Dataset erstellt hat. In das Dataset hat er drei DataTables gepackt und in die DataTables zwei, drei oder mehr Felder.

    Das ist nicht die Datenbank !

    Das ist das typisierte Dataset, das Fundament, auf dem das Haus steht. Dieses Dataset kommt völlig ohne Dateien auf irgendwelchen Medien aus (wie EDR auch oft demonstiert - die "Generate"-Klicks füllen das Dataset im Speicher einfach auf. Thats it. da wird nix auf Festplatten geschrieben oder von gelesen). Ergo kannst du vollkommen losgelöst von irgendwelchem SQL-Geraffel oder derartigem Zeug nur mit dem Dataset erstmal loslegen. Eine Routine, die ein paar Testdaten einfüllt und im Form_Load ausgeführt wird und schon biste raus aus der Nummer.
    Selbst wenn du irgendwann so weit bist, das du die bisher schon geknipsten Fotos und dazu passenden Daten einlesen willst (was definitiv nicht am Anfang passieren sollte), ändert sich nix daran.

    Ganz am Ende, wenn du der Ansicht bist "okay, damit kann ich leben", dann - und erst dann - wird es in Sachen Dateien interessant. Ob das dann eine XML-Datei wird oder SQLite oder SQLCE ist dann völlig untergeordnet. Das Dataset kümmert sich völlig ohne dein zutun darum, das die Daten dann auf der Platte landen (persistiert werden, so der Fachausdruck). Und erst das Speichern auf der Platte nennt sich "Datenbank".

    Zur rechtlichen Seite: Sämtliche Express-Versionen sind frei. Das gilt auch für die frisch herausgegebene Community Edition. Damit darf jeder entwickeln, wie er lustig ist und erst ab ein paar Millionen US$ Umsatz mußt du an eine Lizenz denken.
    *KLICK*

    Mensch Leute, jetzt begreife ich es erst :)

    Hätte ich gewusst das mit dem "Dataset" gemeint ist, eine Möglichkeit zu erhalten, Daten zu verwalten - hätte ich weniger doof geantwortet ;)

    Das ist ja klasse!

    Ich hatte mich in dem einem Tutorial von EDR schon gewundert ob man mit dem DataSet nur Tabellen bzw. Felder "einmalig" füllen kann oder auch eine Speicherung erfolgt.

    Also, nun vergesse ich SQL und ACCESS und arbeite mit dem DataSet! :)

    Auf die to-do-Liste *DataAdapter* / *DataSet*.

    Vielen vielen Dank, dann mach ich mich mal weiter an das lesen.