Abfrage mit Parameter aus Access in Dataset

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Panter.

    Abfrage mit Parameter aus Access in Dataset

    Hallo zusammen

    Ich bin ja auf den Geschmack des Datasets gekommen. Nun möchte ich eine Abfrage, welche im Access erstellt habe einfügen. Einfach im Server-Explorer unter Funktionen die Abfrage in das Dataset verschieben - dachte ich zumindest.

    Leider erhalte ich folgende Fehlermeldung Problem bei Mergen von Datenobjekten: - ..Es konnten keine Parameterinformationen für die gespeicherte Prozedur bzw. Funktion abgerufen werden... Die Parametersammlung ist leer

    Wo kann ich diese Parameter hinterlegen? Unten habe ich noch den SQL für die Abfrage eingefügt, da benötigt man 2 Parameter.

    Besten Dank

    Nachtrag:
    Ziel wäre es den das Datenset ungefär so zu füllen: Saldo_Table_Manager.FillBy_(DS.Saldo, Datum, Datum)


    Spoiler anzeigen

    SQL-Abfrage

    1. PARAMETERS P_SaldoDatum DateTime, P_bis DateTime;
    2. SELECT
    3. MANr,
    4. Sum(Anwesenheit) AS SummevonAnwesenheit,
    5. Sum(Kompensation) AS SummevonKompensation,
    6. Sum(Vorholzeit) AS SummevonVorholzeit,
    7. Sum(Ferien) AS SummevonFerien,
    8. Sum(Krank) AS SummevonKrank,
    9. Sum(BU) AS SummevonBU,
    10. Sum(NBU) AS SummevonNBU,
    11. Sum(Bez_Absenz) AS SummevonBez_Absenz,
    12. Sum(Militaer) AS SummevonMilitaer,
    13. Sum(Ausbildung) AS SummevonAusbildung,
    14. Sum(Morgenschicht) AS SummevonMorgenschicht,
    15. Sum(Abendschicht) AS SummevonAbendschicht,
    16. Sum(KA) AS SummevonKA,
    17. Sum(Feiertag) AS SummevonFeiertag
    18. FROM (
    19. SELECT
    20. MANr,
    21. Anwesenheit,
    22. Kompensation,
    23. Vorholzeit,
    24. Ferien,
    25. Krank,
    26. BU,
    27. NBU,
    28. Bez_Absenz,
    29. Militaer,
    30. Ausbildung,
    31. Morgenschicht,
    32. Abendschicht,
    33. KA,
    34. Feiertag
    35. FROM MA_Tag
    36. WHERE MA_Tag.Datum>=[P_SaldoDatum] And MA_Tag.Datum<[P_bis] and Saldo = false
    37. Union all
    38. SELECT
    39. MANr,
    40. Anwesenheit,
    41. Kompensation,
    42. Vorholzeit,
    43. Ferien,
    44. Krank,
    45. BU,
    46. NBU,
    47. Bez_Absenz,
    48. Militaer,
    49. Ausbildung,
    50. Morgenschicht,
    51. Abendschicht,
    52. KA,
    53. Feiertag
    54. FROM MA_Tag
    55. WHERE MA_Tag.Datum=[P_SaldoDatum] AND Saldo = True
    56. ) AS T1
    57. GROUP BY T1.MANr;

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

    Hallo zusammen

    Die Normalen Abfragen, bzw. Tabellen funktionieren ja auch ohne Probleme. Nur eben mit Paramtern direkt im Access habe ich Probleme.

    Ich habe noch Zuhause probiert, damit ich eventuelle Installationsfehler ausschliessen kann. Bei beiden Installationen wird die Tabelle und der Tableadapter angezeigt, die Fehlermeldung bleibt.

    Ich habe ein wenig experemiert - dachte dass ich vielleicht beim TableAdapter mit .Parameters.Add("P_Datum", OleDbType.Date).Value etwas bewirken kann, leider nicht.

    Danach habe ich beim TableAdapter im Dataset den SQL geändert. Normalerweise steht ja der so: SELECT MANr FROM Saldo bei meiner Abfrage SELECT * FROM Saldo

    Danach habe ich zuerst den SQL wie folgt geändert:

    SQL-Abfrage

    1. SELECT *
    2. FROM Saldo
    3. WHERE (P_SaldoDatum = ?) AND (P_Bis = ?)

    Der Adapter hat nun 2 Parameter - die Abfrage ging leider immer noch nicht.

    Nun habe ich die Abfrage nochmals angepasst:

    SQL-Abfrage

    1. PARAMETERS P_SaldoDatum DateTime, P_bis DateTime;
    2. SELECT *
    3. FROM Saldo


    Der Designer motzt nun, dass er den SQL nicht mehr analysieren kann - die Abfrage funktioniert aber..

    Die Lösung macht mich zwar nicht glücklich, finde sie aber noch besser als den SQL im Code zu speichern.

    LG
    Ah - ich glaub mein vorheriger Post war nur halbrichtig.
    Also nun vermute ich, dass du einen TableAdapter für diese Access-Abfrage bereits im DatasetDesigner hast.
    Bei dem TableAdapter kann man nun Abfragen hinzufügen (im Dataset-Designer, nicht in Accesss).
    Also die Standard-Abfrage fragt immer die komplette Tabelle ab, und mit KontextMenü kann man eine hinzufügen. da geht ein Abfrage-Assistent auf, und da kann man auch Parameter festlegen.
    Nach abschluss des Assistenten hat der TableAdapter eine weitere Abfrage, mit Parametern. Im Hintergrund wurde eine vb.net-Methode generiert, die entsprechende Parameter erwartet.

    Mir scheint, du hast da händisch drin gefummelt - vermutlich geht das nicht.
    So eine parametrissierte TableAdapter-Abfrage hat ja auch eine Parameters-Collection, und da müsssen genau die richtigen DbParameter angelegt sein - das würde ich nicht empfehlen, händisch hinzufrickeln zu versuchen.
    Hallo ErfinderDesRades

    Wie gesagt, ich finde das Dataset toll - leider habe ich eben noch so ein paar Details nicht herausgefunden:

    Wenn ich die Abfrage nun im Dataset Designer - statt im Access erstellen möchte, macht dieser nicht mit - Das Ergebnis muss ja wieder der Struktur der Tabelle entsprechen - gleich viele Felder und genau dieselben Namen. Zudem kann er mein SQL nicht analysieren - mag wohl kein Union- SQL habe ich ja in Post1.

    Was ich aber noch herausgefunden habe: im Dataset - TableAdapter auswählen, Eigenschaften, Parameters - auf das Button klicken und 2 Parameter hinzufügen.

    LG Panter