Hilfe bei der Umsetzung einer Sql Abfrage in Vb 2010

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von mpeterjena.

    Hilfe bei der Umsetzung einer Sql Abfrage in Vb 2010

    Hallo an alle,

    ich brauche mal eure Hilfe, ich bin gerade dabei eine Datenbankanwendung zu schreiben. Dazu muss ich sagen das ich noch ein ziemlicher Neuling bin.

    ich habe folgende abfrage die in im SQL Managmentstudio einwandfrei läuft :

    SQL-Abfrage

    1. SELECT
    2. dbo.gewicht.id,
    3. dbo.gewicht.differenz,
    4. dbo.stammdaten.nachname
    5. FROM
    6. dbo.gewicht
    7. RIGHT OUTER JOIN dbo.stammdaten ON (dbo.gewicht.id = dbo.stammdaten.id)
    8. WHERE
    9. dbo.stammdaten.vorname = dbo.gewicht.gewicht
    10. GROUP BY
    11. dbo.gewicht.id,
    12. dbo.gewicht.differenz,
    13. dbo.stammdaten.nachname
    14. ORDER BY
    15. dbo.gewicht.Datum


    meine Frage ist nun wie kann ich diese so in VB 2010 umsetzen das ich das zum laufen bekommen.
    Bisher habe ich meine Abfragen sehr einfach gehalten wie zum Beispiel diese:

    VB.NET-Quellcode

    1. da = New OleDbDataAdapter(
    2. "select * from stammdaten where" &
    3. " nachname like '%" & TextBox1.Text & "%'", Con)
    4. da.Fill(dt)


    Ich würde mich über eure Hilfe freuen.

    Mit besten Grüßen

    Michael
    Ahoi,

    wo genau ist jetzt dein Problem ?
    Du nimmst die Abfrage die Funktioniert und setzt sie als Abfrage in deinen Code.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Ah ok.
    Hast du dir dann schon mal angeschaut, was eine Überladung ist ?
    Was ist denn zb. dt bei dir ? ... soweit ich weiß stellt OleDbAddapter einen Datensatz her, mit dem du ein Dataset füllen kannst, nicht aber unbedingt eine Datatable.
    Wo genau kommt denn der Fehler, direkt beim Instantiieren des Adapters ?
    Schau mal dich mal hier um und das hier an.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Hallo Manu,

    ich habe noch einmal alles umgestellt jetzt bekomme ich nur noch die Fehlermeldung:

    Falsche Syntax in der Nähe von ','.

    an dieser Stelle einmal den gesamten Code ich sehe langsam vor lauter Bäumen den Wald nicht mehr:

    VB.NET-Quellcode

    1. ​Sub suchen()
    2. Dim ConStr As String = "Provider=SQLNCLI10;Server=BIE\SQLEXPRESS;Database=Fitness;Uid=mpeter;Pwd=mp971150; Integrated Security=SSPI;"
    3. Dim Con As New OleDbConnection(ConStr)
    4. ds.Tables.Add(dt)
    5. da = New OleDbDataAdapter("gewicht.id,gewicht.differenz,stammdaten.nachname" &
    6. "RIGHT OUTER JOIN dbo.stammdaten ON (dbo.gewicht.id = dbo.stammdaten.id)" &
    7. "WHERE stammdaten.nachname = gewicht.nachname" &
    8. "GROUP BY dbo.gewicht.id, gewicht.differenz, stammdaten.nachname()" &
    9. "ORDER BY dbo.gewicht.Datum", Con)
    10. da.Fill(dt)
    11. Dim cb As New OleDbCommandBuilder(da)
    12. bs.DataSource = dt
    13. Me.DataGridView1.DataSource = bs
    14. End Sub
    in ado.net würde man solche Abfragen eher vermeiden. Weil dadurch 2 Tabellen zusammengemanscht werden, sodass die Möglichkeit, Änderungen an den Daten vorzunehmen, verloren geht.
    Man würde eher alle Stammdaten abrufen, und eine DataTable damit füllen.
    Und dann die Gewicht-Werte des ausgewählten Stamms in eine annere DataTable füllen.
    Nun kann man Gewicht-Datensätze zufügen, löschen, editieren, und die Änderungen dann auch rückspeichern.

    Durchs getrennt halten getrennter, aber verknüpfter Tabellen eröffnen sich erst die Gestaltungsmöglichkeiten der 4 Views: vier Views-Videos
    Hallo ErfinderDesRades,

    ich werde mir das alles einmal anschauen weil das wäre an einer anderen Stelle meines Programmes sehr sinnvoll, mein Gedanke an dieser Stelle ist nur das er mir alle entsprechende Daten zurückliefert es soll nichts
    verändert werden es liegt nur ein Gridview und eine Textbox auf dem Formular.

    Mit besten Grüßen

    Michael

    mpeterjena schrieb:

    da = New OleDbDataAdapter("SELECT gewicht.id,gewicht.differenz,stammdaten.nachname" &
    "RIGHT OUTER JOIN dbo.stammdaten ON (dbo.gewicht.id = dbo.stammdaten.id)" &
    "WHERE stammdaten.nachname = gewicht.nachname" &
    "GROUP BY dbo.gewicht.id, gewicht.differenz, stammdaten.nachname()" &
    "ORDER BY dbo.gewicht.Datum", Con)


    das & hab ich gefunden ist nur weg gerutscht.

    Aber zieh erstmal die Änderungen von EDR durch.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Hallo Manu,

    ich habe nochmal alles geprüft aber nichts verändert jetzt meckert er an:

    Falsche Syntax in der Nähe des 'OUTER'-Schlüsselworts.

    ansonsten läuft er jetzt sauber durch ich denke ich muss etwas an meinem Stil ändern aber ich bin ja noch ein Frischling und da kann man noch sehr viel lernen.

    Mit besten Grüßen
    zum Befüllen typisierter Datasets gugge auch Forms over Data Videos oder "Datenbank in 10 Minuten" auf Movie-Tuts

    Wobei ich immer anmerke, dass der DB-Zugriff die Nebensache ist, die Hauptsache ist die Client-Anwendung.
    Und die kann man viel einfacher erstmal ohne DB-Anbindung entwickeln - wie 4Views zeigen.

    Und bis wasweißich 20000 Datensätzen gibts vom Datenaufkommen her noch gar keinen Grund, überhaupt eine DB zu hinterlegen.
    (Es gibt allerdings evtl. annere Gründe, etwa Multi-User-Betrieb)
    Hallo Manu,
    Hallo ErfinderDesRades,

    vielen Dank euch beiden es waren für mich sehr viel Anregungen, ich werde mich weiter mit dem Thema beschäftigen.
    Auf die Frage warum Datenbank die kann ich auch nicht so beantworten aber der Grundgedanke ist schon eine Client-Server Anwendung zum Hintergrund ich bin schwer Herzkrank und muss ich viele Daten aufnehmen (Blutdruckmessgerät, Gewicht, Pulsuhr beim Training) alle Daten habe ich zwar als einzelne txt, csv Dateien vorliegen, dieses möchte ich ändern darum meine Anwendung.

    ich habe erstmal zu Testzwecken es sehr vereinfacht was in diesem Stadium mir meine Arbeit erleichter:

    VB.NET-Quellcode

    1. ​da = New OleDbDataAdapter("select ge_nachname, Datum, differenz from gewicht, stammdaten where(ge_id = st_id) order by ge_nachname, Datum, differenz", Con)


    Mit besten Grüßen

    Michael

    VB.NET-Quellcode

    1. da = New OleDbDataAdapter("select gewicht.id,gewicht.differenz,stammdaten.nachname " & ' Leerzeichen nach stammdaten.nachname
    2. "RIGHT OUTER JOIN dbo.stammdaten ON (dbo.gewicht.id = dbo.stammdaten.id) " & ' Leerzeichen nach (dbo.gewicht.id = dbo.stammdaten.id)
    3. "WHERE stammdaten.nachname = gewicht.nachname " & ' Leerzeichen nach gewicht.nachname
    4. "GROUP BY dbo.gewicht.id, gewicht.differenz, stammdaten.nachname() " & ' Leerzeichen nach stammdaten.nachname()
    5. "ORDER BY dbo.gewicht.Datum", Con)


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Ich hatte ja eigentlich darauf gehofft, dass er es selbst findet, wenn er sich den String mal ausgeben lässt.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de