Abfragen per Code und dann mehrere Verbinden

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Romed.

    Abfragen per Code und dann mehrere Verbinden

    Hallo Forum

    Ich habe wieder mal ne Frage. Diesmal zu Abfragen.

    Wie kannich verschiedene SQL Select Abfragen die ich per Code mache miteinander verbinde.

    Spich ich erstelle aiene SQL Abfragen wie diese.

    VB.NET-Quellcode

    1. dataset = New DataSet("kontaktdetailsadapter")gesamtstundentable = dataset.Tables.Add("tblstundenzettel")
    2. adapter = New SqlDataAdapter("SELECT DATENAME(m, Dienstdatum) AS Monat, SUM(MehrarbeitsstundenNormalzeit) AS SummeMehrarbeitszeitNormalzeit, SUM(Überstunden50) AS SummeUeberstunden50," & _"SUM(Überstunden100) AS Summeueberstunden100, SUM(Urlaub_genommen) AS SummeUrlaubgenommen, SUM(Zeitausgleich_genommen) AS SummeZagenommen, SUM(Krankenstand) AS SummeKrankenstand," & _
    3. "SUM(Vereinszeit) AS SummeVereinszeit, SUM(GesmbH) AS SummeGesmbh, mitarbeiter_id, YEAR(Dienstdatum) AS Jahr, MONTH(Dienstdatum) AS Monatstag" & _"FROM tblstundenzettel WHERE YEAR(Dienstdatum) = " & jahre & " AND mitarbeiter_id =" & user_id & _"GROUP BY mitarbeiter_id, YEAR(Dienstdatum), MONTH(Dienstdatum), DATENAME(m, Dienstdatum) ORDER BY Jahr, MONTH(Dienstdatum)", sqlconn)
    4. adapter.Fill(gesamtstundentable)adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
    5. grid_stundenuebersicht.DataSource = gesamtstundentable

    Nun möchte ich eine zweite Abfrage genereiren und diese dann mit der eersten verbinden.

    DIe zweite Abfrage sollte andere Daten filtern aus einen adneren Tabelle und diese möchte ich dann in eine Tabelle zusammenführen.

    Hab das in access gemacht da kann man ja verschiedene Abfragen genereieren und diese dann wieder gegenseitig abfragen.

    LG Romed


    Edit by Dodo:
    -> Topic Verschoben (Hauptforum => Datenbankprogrammierung)

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

    1. Warum postest du das nicht im DB-Forum?

    2. Ist bestimmt prinzipiell möglich, mit einem Join oder evtl. auch mit einem SubSelect.
      Ich bin aber für so kompliziertes Sql keine große Leuchte - v.a. habichnicht verstanden, was genau du aus welchen Tabellen wie zusammenführen willst.

    3. Du scheinst auch keine DbParameter zu verwenden - das tätichaber sehr empfehlen: DbParameter verwenden

    ErfinderDesRades schrieb:

    Warum postest du das nicht im DB-Forum?

    Hab ich total übersehen, Sorry.

    ErfinderDesRades schrieb:

    Ist bestimmt prinzipiell möglich, mit einem Join oder evtl. auch mit einem SubSelect.

    Ich bin aber für so kompliziertes Sql keine große Leuchte - v.a. habichnicht verstanden, was genau du aus welchen Tabellen wie zusammenführen willst.
    Hab ich eben schon Probiert bin aber auf keinen grünen Zweig gekommen.

    ErfinderDesRades schrieb:

    Du scheinst auch keine DbParameter zu verwenden - das tätichaber sehr empfehlen: DbParameter verwenden
    Da muss ich mich erste einlesen :)

    Aber trotzdem Danke für die mühen.

    LG

    Romed schrieb:

    Hab das in access gemacht da kann man ja verschiedene Abfragen genereieren und diese dann wieder gegenseitig abfragen
    Dann schau dir doch mal von deiner Access-Abfrage die SQL-Ansicht an, dann hast du den gewünschten SQL-Befehl.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ist in Access ne Abfrage nicht sowas wie nen View?
    Sprich du kannst in Access doch auch nur auf "gespeicherte" Abfragen zugreifen...
    Ne Datenbank nann sowas wie

    SQL-Abfrage

    1. CREATE VIEW baum AS
    2. SELECT *
    3. FROM bla


    Dann kannst du in ner zweiten Abfrage mit

    SQL-Abfrage

    1. SELECT * FROM baum

    darauf zugreifen.

    Aber Achtung: Er erstellt einen View, so wie man eine Tabelle erstellt...
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Ja ich will einen Abfrage erstellen und dann diese mit einer Abfrage wieder weiter bearbeite, sodass ich dann am Ende eine Abfrage mit den gewünschten Abfragewerten Habe.

    LG
    Auf was für ner Datenbank arbeitest du denn?
    Die meisten unterstützen das anlegen von Views über den oben genannten Befehl.
    Ein View ist nicht anderes als ne Abfrage die gespeichert wird.
    Im Grunde kannst du für komplexere Abfragen so einen View Einrichten und dann dann darauf im Nachhinein gezielt eine weitere Abfrage machen.

    Ich würde da aber vorschlagen dass du den View im Vorfeld auf der Datenbank anlegst und dich vom Programm aus nurnoch über eine SELECT Abfrage bedienst.

    Kannst dir ja mal im SQL Doc anschauen was so ein View ist ;)

    de.wikibooks.org/wiki/Einf%C3%…_SQL:_Erstellen_von_Views
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Hy

    Arbeite mit einer SQL Express 2005 Datenbank im Hintergrund und greife NUR über Code darauf zu.

    Ich werde das mal probieren ob das so funktioniert.
    Vielen Vielen Dank für den Anstoss.

    Ich berichte über meine Erfolge oder MIsserfolge ;)

    LG
    Das Wichtige ist, dass du bedenkst, dass er einen View erstellt und speichert, so wie du mit einem Create Befehl auch eine Tabelle anlegst.

    Der View ist eine auf der Datenbank!!! gespeicherte Abfrage die beim Aufruf immer neu ausgeführt wird.
    Das ist sehr bequem für große Abfragen die man dann im Programmcode über einen kurzen SELECT Befehl aufrufen kann.
    Aber wenn du eine Routine im Programm hast, welche jedes mal beim Aufruf versucht den View zu erstellen, fällt er logischerweise auf die Nase, weil es eben diesen View schon gibt.
    Man legt solche Views im Grunde nur einmal an und "verwendet" sie dann nurnoch.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Ich sollte den View immer wenn ich das frm_Kontaktdetails aufrufe neu mit Daten befüllen da sich die Daten ja ändern.

    Geht das dann?
    Der View ist permanent auf der Datenbank wenn du ihn einmal anlegst...

    Als Beispiel

    SQL-Abfrage

    1. CREATE VIEW V_Kunde12345 AS
    2. SELECT Vorname, Name, Strasse, Hausnummer, Plz, Wohnort
    3. FROM Kunde
    4. WHERE Plz = 12345


    Das Dingen liegt immer brav auf der Datenbank.
    Im Programm rufst du nun zB. auf:

    SQL-Abfrage

    1. SELECT Vorname, Name
    2. FROM V_Kunde12345


    Und er wirft dir entsprechend alle Vornamen und Namen aus der Tabelle Kunde aus.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Korrekt!
    Der View wird immer zum Zeitpunkt des Aufrufs ausgeführt und enthält immer die aktuellen Daten.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D