Announcement

Collapse
No announcement yet.

TableAdapter oder SqlDataSource mit MS Access Query, das Parameter enthält

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TableAdapter oder SqlDataSource mit MS Access Query, das Parameter enthält

    Hallo zusammen.

    Ich bin noch recht unerfahren in Sachen .NET, bisher haben wir nur mit MS Access gearbeitet. Wir wollen eine bestehende MS Access Anwendung nach ASP.NET portieren, um sie internetfähig zu machen.

    Dabei stecke ich derzeit bei der Verwendung der MS Access Queries etwas fest. Wir haben in Access einige Queries, die Parameter verwenden, also sowas:
    PARAMETERS parDatum DateTime;

    Die Frage ist nun, wie kann ich eine solche Abfrage in einem TableAdapter oder einer SqlDataSource verwenden? Generell scheinen Queries ohne Parameter als Views zur Auswahl zu stehen und bei der SqlDataSource kann man Nicht-SELECT Queries unter den StoredProcedures finden. Nur meine SELECT-Queries mit Parametern werden nirgends angeboten. Ich kann natürlich den SQL-Code manuell reinschreiben und die Abfrage verwenden, z.B.:
    select * from qry_Test

    Aber wenn ich diese Abfrage dann im nächsten Schritt testen will, kommt berechtigerweise eine Fehlermeldung, nach dem Motto nicht alle Parameter angegeben.

    Nur wie kann ich die Parameter da mit angeben?

    Es ist leider keine Alternative, den SQL-Code manuell hinzuschreiben und ein ...WHERE abc=? hinzuschreiben, weil die aufgerufene Abfrage noch Unterabfragen enthält, die den Parameter auch verwenden.

    Und die ca. 2.000 Abfragen, die wir in MS Access haben, alle nochmal nachzubauen wäre eine Höllen-Arbeit. Von der Gefahr, dass dabei Fehler eingebaut werden, mal ganz abgesehen. Es muss doch irgendeine Möglichkeit geben, die Queries wiederzuverwenden?

    Ich habe schon eine Weile gegoogelt und folgendes gefunden:
    http://www.mikesdotnetting.com/Artic...x?ArticleID=26

    http://www.webconcerns.co.uk/asp/acc...essqueries.asp

    http://www.xefteri.com/articles/show.cfm?id=6

    Das ist im Prinzip das Problem, was ich habe, nur die Lösung ist ja quasi zu Fuß.

    Und wenn es schon so nette Dinge wie TableAdapter oder SqlDataSource gibt, dann möchte ich die im Hinblick auf die Anbindung an die FormViews und Grids auch gerne verwenden.

    Kann mir also vielleicht jemand einen Tipp dazu geben?

    Vielen Dank vorab.

  • #2
    Versuch mal Dir ein DataSet anzulegen und da Deine Tabellen reinzuziehen.

    Folgende Schritte:
    1. Neues Element hinzufügen...
    2. DataSet auswählen und einen Namen vergeben
    3. Unter Ansicht den Server Explorer öffnen
    4. Eine Verbindung zur Access Datenbank aufbauen
    5. Die Tabelle in das DataSet ziehen
    6. Neue Abfrage hinzufügen und in der Abfrage alle Parameter mit dem Zeichen ':' beginnen lassen

    Das sollte alles sein Daraufhin erstellt Dir Visual Studio automatisch einen TableAdapter und die dazu passende DataTable. Mit dem TableAdapter rufst Du Daten ab und bekommst eine DataTable zurück.

    Ich hoffe das hilft erstmal

    Grüße!!!

    Comment


    • #3
      Hi.

      Danke für die Anregungen. Im Server Explorer erscheint die Query zumindest - unter "Functions"!

      Nur weiter komme ich damit leider auch nicht. Ich kann die Query zwar in das DataSet ziehen und es werden auch DataTable und TableAdapter angelegt, aber schon dabei kommt eine Fehlermeldung:
      Merging data objects encountered the following issues:
      1(Warning): Parameter information for stored procedure/function could not be retrieved. Parameters collection will be empty.
      Ein "Preview" des DataTable/TableAdapters ergibt die folgende Meldung:
      ...could not be previewed
      No value given for one or more required parameters.
      Im Ergebnis habe ich DataTable und TableAdapter mit Basis-SQL
      select * from qryTest

      D.h. genau das, was ich auch manuell anlegen kann. Es werden zwar alle Felder des Queries erkannt und im DataTable angezeigt, aber die PARAMETERS in der Query werden nicht berücksichtigt. Ich stehe also wieder an der gleichen Stelle:

      Wie kann ich die Parameter der Access-Query deklarieren, so dass .NET diese beim Aufruf der Query mit übergibt?

      Comment


      • #4
        puh das klingt so als wäre das etwas speziell für Access. Ich hab leider keine Access Datenbank zur Hand sonst würde ich das mal ausprobieren.
        Mein Gedanke war dass das wie eine Oracle Datenbank funktioniert...

        Kann man bei einer Access Verbindung nicht auch die Tabelle in die das DataSet ziehen? Danach kannst Du das Query einem TableAdapter zuordnen (rechtsklick -> Abfrage hinzufügen...)

        Comment


        • #5
          Ich habs bisher nur mit MS Access versucht, weiß daher nicht, ob es speziell ist. Es müsste aber vergleichbar mit Oracle StoredProcedures sein. Die bekommen ja auch Parameter übergeben. Unterschied ist vermutlich nur, dass man die bei den SP als Argumentenliste im Aufruf mit angeben kann und bei den Queries ist das nicht vorgesehen.

          Ich kann zwar eine Tabelle oder Query "rüberziehen", aber das bringt mich alles nicht weiter, weil ich nirgends die Parameter an die Query übergeben kann.

          Es ist eben nicht so, dass ich in dem SQL Befehl die Parameter mit angeben könnte. Bzw. ich weiß zumindest nicht, wie das gehen sollte.

          Gibt es denn niemanden, der das bisher gemacht hat? Sollte doch nicht so selten sein, oder?

          Bin dankbar für jede Hilfe.

          Comment


          • #6
            Hallo.

            Es hat sicher leider noch immer keine Lösung gefunden.

            Auch wenn hier keiner eine Lösung hat, kann mir ja vielleicht jemand einen Tipp geben, wo ich mal suchen oder nachfragen könnte?

            Wäre super nett.

            Comment

            Working...
            X