Suchtags in Datenbank

  • VB.NET
  • .NET 4.5

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von LMS.Crafter.

    Suchtags in Datenbank

    Hallo liebe Community,

    ich bin gerade an einem Projekt, bei dem ich mir ein Programm schreibe wo ich individuelle Seiten selber gestalten kann.
    Um eine Seite (Form) zu öffnen hatte ich bis anhin eine einfache Textbox mit nem Button "Suchen".

    Was dann passiert ist:

    Visual Basic-Quellcode

    1. If textbox1.text = "tag1" or textbox1.text = "tag2" or textbox1.text = "tag3" or textbox1.text = "tag4" or textbox1.text = "tag5" or textbox1.text = "tag6" or textbox1.text = "tag7" then
    2. Seite1.show
    3. Else if textbox1.text = "tag1" or textbox1.text = "tag2" or textbox1.text = "tag3" or textbox1.text = "tag4" or textbox1.text = "tag5" or textbox1.text = "tag6" or textbox1.text = "tag7" then
    4. Seite2.show
    5. ...


    Dies war anfangs nur ne Lösung bis ich ne bessere Idee habe doch da es gut geklappt hat und ich das Programm recht gut gebrauchen kann bin ich bereits bei 90 Seiten angekommen.
    Da ich jetzt vorhabe das Projekt noch weiter zu führen brauche ich eine neue Idee für die Tagsuche.

    Die Idee wäre jetzt eine Datenbank anzulegen, in der ich die Tags eintragen kann, leider bin ich ein blutiger Anfänger und habe noch keine Idee wie ich das anstellen könnte.
    Denn wenn ich Buch suche soll nur das ganze Wort gesucht werden, nicht dass dann als Suchergebnis Drehbuch rauskommt.
    Ich wäre euch sehr dankbar, wenn ich mir helfen könntet oder eine Seite kennt auf der dies leicht verständlich geschildert ist.

    Ich hoffe man versteht was ich meine, vielen Dank für eure Zeit! :)
    'Tschuldigung, aber wann wird bei dem Code bitte Seite2 aufgerufen/angezeigt? Die Bedingungen für Seite1 & 2 sind doch identisch. Entweder ist das nicht der Code, den Du verwendest, oder der Code funktioniert nicht so, wie Du glaubst.
    Bei logischen Abfragen bist Du mit OrElse und AndAlso besser aufgehoben als mit Or und And.
    Geht es hier um Wochentage? Wegen tag1 bis tag7.
    Was gibt es denn zu Auswahl? Den Code kann man zweifellos besser gestalten - wenn man nur wüsste, was Du vorhast.
    Du bist bei 90 Seiten angekommen. Was hat das zu bedeuten? Und was ... OMG! Du willst doch nicht etwa sagen, dass Du 90 solcher Abfragen in Deinem Code drin hast, oder???

    Willst Du ein Buch einscannen und Seite für Seite die ganzen Wörter erfassen, die Du dann suchen kannst?
    Seite1.Show(), Seite2.Show etc. weist darauf hin, dass Du 90 einzelne Seiten hast. Jede dieser Seiten ist auf einem Formular (kurz Form) platziert. Ich weiß ja nicht, was das werden soll, aber mein Vorschlag:
    Text erfassen
    den durchsuchen
    wenn Treffer (man kann mit wenig Code Groß-/Kleinschreibung beachten lassen und auch nur ganze Wörter und zig andere Sachen), dann jene Seite in ein Formular und dieses anzeigen lassen. Und dieses Formular wird für egal welche Seite verwendet. D.h. Du hast 2 Formulare: Deine Suchmaskenformular und Dein Buchseitenanzeigeformular. Mehr nicht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

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

    :) Entschuldige ich habe mich wohl etwas seltsam ausgedrückt, der Code ist nur ein Beispielcode ich kann dir einen aus dem Programm geben:

    Visual Basic-Quellcode

    1. If TextBox1.Text = "energiebedarf" Or TextBox1.Text = "energiehaushalt" Or TextBox1.Text = "energiebedarf körper" Or TextBox1.Text = "energieumsatz" Or TextBox1.Text = "energieumsatz körper" Or TextBox1.Text = "grundumsatz" Or TextBox1.Text = "leistungsumsatz" Or TextBox1.Text = "arbeitsumsatz" Or TextBox1.Text = "energieverbrauch" Then
    2. Energiebedarf.Show()
    3. ElseIf TextBox1.Text = "leitbild" Or TextBox1.Text = "unternemensstrategie" Or TextBox1.Text = "strategie" Or TextBox1.Text = "unternehmensleitbild" Then
    4. Leitbild_Unternehmensstrategie.Show()
    5. .....


    Nein kein Buch :)
    Ich habe mir Dinge zusammengefasst, welche ich sonst oft immer wieder neu zusammensuchen muss, auf jeder Seite (Form) steht das jeweilige Thema mit den wichtigen Sachen kurzgefasst drauf.
    :) Das Programm sollte nur ein kleines Projekt sein aber es wurde wie gesagt grösser
    OMG! Du willst doch nicht etwa sagen, dass Du 90 solcher Abfragen in Deinem Code drin hast, oder???
    und ja :whistling: ich habe 90 so Zeilen drin, weshalb ich mir gedacht habe
    dass ich da evt. mal was ändern sollte :)
    Dann würde ich an Deiner Stelle alle Suchbegriffe zusammenfassen und dann schreiben: Wenn TextBox1.Text einen der Suchebegriffe enthält, dann öffne Energiebedarf. Da gibt es verschiedene Wege.

    Eine einfache Möglichkeit wäre, wenn in einer csv-Datei Suchbegriffe und Seitenindex stehen, also z.B.:

    Quellcode

    1. energiebedarf;0
    2. energiehaushalt;0
    3. energiebedarf körper;0
    4. ...
    5. leitbild;1
    6. unternehmensstrategie;1

    Dann eben erstmal in eine passende List-Of-Class einlesen und dann geht's z.B. über nen Schleifencode oder LINQ sehr einfach:

    VB.NET-Quellcode

    1. Private Class KeywordPair
    2. Public Keyword As String
    3. Public PageIndexToOpen As Integer
    4. Public Sub New(Keyword As String, PageIndexToOpen As Integer)
    5. Me.Keyword = Keyword
    6. Me.PageIndexToOpen = PageIndexToOpen
    7. End Sub
    8. End Class
    9. Private ListOfKeywords As New List(Of KeywordPair)
    10. Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    11. ListOfKeywords.Add(New KeywordPair("energie", 1))
    12. ListOfKeywords.Add(New KeywordPair("wasser", 1))
    13. ListOfKeywords.Add(New KeywordPair("geld", 2))
    14. ListOfKeywords.Add(New KeywordPair("mitarbeiter", 2))
    15. End Sub
    16. Private Sub BtnFindKeywordAndOpenPage_Click(sender As Object, e As EventArgs) Handles BtnFindKeywordAndOpenPage.Click
    17. Dim FoundKeywordPair = ListOfKeywords.FirstOrDefault(Function(x) x.Keyword = TxtKeywordToFind.Text)
    18. If FoundKeywordPair Is Nothing Then Exit Sub
    19. Select Case FoundKeywordPair.PageIndexToOpen
    20. Case 1 : OpenFirstPage()
    21. Case 2 : OpenSecondPage()
    22. End Select
    23. End Sub

    Dass ich keinen Import, sondern die Daten hardcoded habe, sei mal außer acht gelassen; auch der Hilfsklassenaufbau ist rudimentär. Und der Seitenaufruf auch. Aber es geht's ums Vorschlags-Konzept.

    Ich würd's ja über ein tDS machen, aber wie war das mit Hammer haben und Nägel sehen ...

    btw: Was steht denn da auf einem Formular? Muss ja nicht der Originalinhalt sein, aber damit wir uns ein Bild machen können.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

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

    LMS.Crafter schrieb:

    ich habe 90 so Zeilen drin, weshalb ich mir gedacht habe
    dass ich da evt. mal was ändern sollte :)

    Zunächst würde ich mein Projekt pausieren und mich mit den Basics von VB und Objektorientierung beschäftigen. 90 Seiten hart gecodet dass ist echt übel. Da biste vermutlich schneller alles neu zu machen, als den alten mist zu überarbeiten. Datenmodellierung ist auch wichtig, weißte was das ist?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ich verstehe das folgendermaßen:

    ​@LMS.Crafter hat 90 Sichten bzw. Abfragen an die Datenbank erstellt und jeweils eine Form dafür, welche er dann "dynamisch" durch Eingabe von Schlagworten aufruft. Da würde ich mir Konzeptionell persönlich erstmal Gedanken machen und dann das ganze Ding neu programmieren. Vermute ich.

    ​@TE bist du Herr über die Datenbank bzw. kannst du dort selbst was drin tun? oder hast du nur Lesezugriff?
    Danke für eure Antworten insbesondere an @VaporiZed das ist genau wonach ich gesucht habe.
    In den Seiten stehen Informationen, welche ich oft benötige z.B. gebe ich Gravitation ein und es erscheint eine Form auf der alle benötigten Informationen
    drauf stehen, welche ich regelmäßig benutze, z.B. die Formel (G * m1 * m2) / r^2 dann steht da z.B. die Gravitationskonstante 6,673 * 10 ^-11 usw.

    Und @mrMo genau das mache ich jetzt :)

    @KBT ich bin "Herr" über die Datenbank ich glaube ich sollte es jetzt mit der Idee von @VaporiZed hinkriegen