Abfrage (View) erstellen

  • VB.NET

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

    Abfrage (View) erstellen

    Hallo,

    Ich arbeite an einem Programm, welches eine Access-Datenbank (mdb) verwendet.
    Beim SQL-Server gibt es ja sogenannte Views (CREATE VIEW Irgendwas AS SELECT...), bei Access gibt es Abfragen.

    Kann ich nun per Code eine neue Abfrage erstellen (und speichern) lassen?

    Gruss
    sandiro

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

    Hallo,

    ich verstehe zwar nicht ganz deine Frage. Aber hier hast du mal einen Beispielcode wie du auf eine Accessdatenbank ne Abfrag machst.
    Die Funktion gibt ein Dataset zurück, in dem der komplette Inhalt der Tabelle drin ist bzw was halt durch die Abfrage zurück kommt.

    Es wäre auch über einen OLEDBDataReader möglich verhält sich wie der SQLDataReader..

    VB.NET-Quellcode

    1. Public Function FetchData(ByVal FileName As String) As DataSet
    2. 'Define the connectors
    3. Dim oConn As OleDbConnection
    4. Dim oComm As OleDbCommand
    5. Dim oData As OleDbDataAdapter
    6. Dim resultSet As New DataSet
    7. Dim oConnect, oQuery As String
    8. 'Define connection string
    9. oConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName & ";User ID=Admin;Password="
    10. 'Query String
    11. oQuery = "SELECT * FROM accessTest"
    12. 'Instantiate the connectors
    13. oConn = New OleDbConnection(oConnect)
    14. oComm = New OleDbCommand(oQuery, oConn)
    15. oData = New OleDbDataAdapter(oQuery, oConn)
    16. Try
    17. 'Open connection
    18. oConn.Open()
    19. 'Fill dataset
    20. oData.Fill(resultSet, "accessTest")
    21. 'Close connection
    22. oConn.Close()
    23. Catch ex As OleDb.OleDbException
    24. Catch ex As Exception
    25. 'Show error message and exit
    26. MsgBox(ex.Message & vbCrLf & ex.StackTrace)
    27. Finally
    28. 'Dispose the connector objects
    29. If Not (oConn Is Nothing) Then oConn.Dispose()
    30. oConn = Nothing
    31. If Not (oComm Is Nothing) Then oComm.Dispose()
    32. oComm = Nothing
    33. If Not (oData Is Nothing) Then oData.Dispose()
    34. oData = Nothing
    35. End Try
    36. 'Return results
    37. Return resultSet
    38. End Function
    Hallo,

    Also es gibt beim SQL-Server sogenannte Views. Das ist einfach eine Abfrage auf ein oder mehrere Tabellen,
    welche gespeichert wird. Wie man eine solche View per Code erstellt, weiss ich auch.

    Mein Programm verwendet allerdings nicht den SQL-Server sondern eine Accessdatenbank.
    Access unterstützt sogenannte Abfragen, diese lassen sich in Access selber erstellen.
    Ich möchte nun aber eine solche Abfrage per Code erstellen.

    Der Benutzer kann im Programm einige Optionen vornehmen, welche in der DB gespeichert werden. Zudem wird eine Abfrage (Select... from...) erstellt. Und diese Abfrage möchte ich abspeichern...


    Gruß
    sandiro

    VB.NET-Quellcode

    1. Private Sub TestToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles TestToolStripMenuItem.Click
    2. Dim con = CategoryTableAdapter.Connection
    3. Dim cmd = New OleDb.OleDbCommand With {.Connection = con}
    4. Dim query = "SELECT * FROM Article WHERE Article.ArticleName LIKE 'A%'"
    5. cmd.CommandText = query
    6. con.Open()
    7. 'query testen
    8. Dim rd = cmd.ExecuteReader
    9. While rd.Read
    10. Console.WriteLine(rd("ArticleName"))
    11. End While
    12. rd.Close()
    13. '/query testen
    14. Dim ViewCreate = "CREATE VIEW ArticleC AS " & query
    15. cmd.CommandText = ViewCreate
    16. cmd.ExecuteNonQuery()
    17. con.Close()
    18. End Sub

    gugge auch Sql-Tut, war der erste treffer bei google
    Also wie man
    Eine View per SQL erstellt weiss ich schon.
    Aber ich habe dies mal direkt in Access versucht und dort hat es nicht funktioniert,
    möglicherweise lags daran, dass ich in einer Abfrage war...

    Ich werde das heute mal in VB probieren....

    Danke und Gruss
    Sandiro


    Edit: Ich habe das bisher nur in Access getestet und dort hat es logischerweise nicht funktioniert (in dem Abfragefenster kann man nur Abfragen erstellen und kann daher per Code keine View erstellen), mit VB hats problemlos geklappt

    Danke und Gruss
    sandiro

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

    Also mit VB funktioniert es bei mir auch.

    In Access 2007 kann man unter "Erstellen | Abfrageentwurf" eine neue Abfrage erstellen.
    Dort (wenn man die Ansicht auf SQL wechselt) muss man ja nur die eigentliche Abfrage "SELECT .... FROM ..." eingeben und ohne das "CREATE VIEW", weil es sich ja um eine Abfrage handelt - die mit Ctrl+S unter einem Namen gespeichert werden kann.
    CREATE VIEW kann in diesem Fenster gar nicht verwendet werden.

    Gruss
    Sandiro

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