SELECT-Befehl für Access 2000-Datenbank funktioniert nicht

  • VB.NET

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

    SELECT-Befehl für Access 2000-Datenbank funktioniert nicht

    Hallo,

    meine Aufgabe ist, aus einer Tabelle in einer Access 2000-Datenbank Datensätze zu selektieren. Folgender Code funktioniert:

    Quellcode

    1. Option Strict On
    2. Imports System.Data.OleDb
    3. Public Class frmMAIN
    4. Dim con As New OleDbConnection
    5. Dim strCON As String
    6. Dim strSQL As String
    7. Dim dtbl1 As New DataTable
    8. Dim cmd1 As New OleDb.OleDbCommand
    9. Dim dadp1 As New OleDb.OleDbDataAdapter
    10. Dim ds1 As New DataSet()
    11. Dim dtROW1 As DataRow
    12. Private Sub frmMAIN_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    13. strCON = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MYDB.MDB;Jet OLEDB:System Database=C:\MYMDW.MDW;User ID=MYUSR;Password=MYPWD;"
    14. con.ConnectionString = strCON
    15. strSQL = "SELECT * FROM tblAdressen'"
    16. With cmd1
    17. .Connection = con
    18. .CommandText = strSQL
    19. .CommandType = CommandType.TableDirect
    20. End With
    21. With dadp1
    22. .SelectCommand = cmd1
    23. End With
    24. dadp1.Fill(dtbl1)
    25. With dgv01 ' DataGridView füllen
    26. .DataSource = dtbl1
    27. End With
    28. con.Close()
    29. End Sub
    30. End Class


    Wenn ich den SQL-Befehl ändere in z.B.

    Quellcode

    1. strSQL = "SELECT *, tblAdressen.NAME1 FROM tblAdressen WHERE tblAdressen.NAME1 = '*XYZ*'"


    erhalte ich keine Datensätze, obwohl welche da sind. Dieser SQL-Befehl direkt in Access eingegeben bringt reichlich Treffer.

    Was mache ich falsch? Danke für alle Tipps!

    Gruß Schorsch
    Welche Spalte soll denn " sein?
    Entweder rufst du * also alle auf oder die Rufst Col1, Col2 auf. Beides funktioniert nicht.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Nein, in den Datensätzen steht nicht wirklich XYZ und die Datenbank heißt auch nicht MYDB oder so.

    Ich suche nur nach dem Fehler. In der Tabelle tblAdressen gibt es das Feld NAME1 und ich möchte z.B. alle "Müllers" auslesen.

    Folgender SQL funktioniert z.B. auch nicht:

    Quellcode

    1. strSQL = "SELECT * FROM tblAdressen ORDER BY tblAdressen.NAME1"


    Wie bereits geschrieben, diese Befehle funktionieren direkt unter Access und bringen jeweils Treffer, nicht aber unter VB 2010.
    Hi,

    was der Erfinder meint ist, dass du bei dem Suchbegriff XYZ ein * vor- und nachgestellt hast.
    Wenn du das als Platzhalter benutzen willst um z.B. auch Datensätze mit 'ABCXYZ123' als Treffer anzeigen zu lassen musst du den LIKE Befehl benutzen. Es werden dann alle Datensätze rausgesucht, die im Feld Name1 irgendwo XYZ drinne haben.

    Visual Basic-Quellcode

    1. strSQL = "SELECT *, tblAdressen.NAME1 FROM tblAdressen WHERE tblAdressen.NAME1 LIKE '%XYZ%'"


    Wenn du einen exakten Namen suchen willst reicht ein

    Visual Basic-Quellcode

    1. strSQL = "SELECT *, tblAdressen.NAME1 FROM tblAdressen WHERE tblAdressen.NAME1 = 'XYZ'"

    aber bitte ohne Sternchen :rolleyes:

    Gruß
    HerrFrie
    Bin ich doof oder ist
    SELECT *, tblAdressen.NAME1
    totaler Humbug, da .NAME1 schon in * enthalten ist?
    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
    @MemoAnMichSelbst
    Das ist das was ich in meinem Post meinte.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Da es einfach übergangen wurde, dachte ich, stell ich die Frage nochmals ^^
    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
    Danke für die Hinweise.

    Ich habe weiter getestet. Folgender Code gibt Datensätze zurück und funktioniert somit:

    Quellcode

    1. strSQL = "SELECT * FROM tblAdressen WHERE tblAdressen.NAME1 = 'XYZ'"


    Folgender Code funktioniert nicht:

    Quellcode

    1. strSQL = "SELECT * FROM tblAdressen WHERE tblAdressen.NAME1 LIKE '*XYZ*'"


    Sobald ich einen Platzhalter benutze, geht's nicht mehr, also z.B. 'XYZ*' oder 'XYZ?'. Kann die Datenbank 'ne Macke haben (Access 2000)?

    Gruß
    Schorsch
    Prüf mal ob der Platzhalter bei Access ein * ist. Bei MS SQL Server isser m.M. nach nämlich nen %.
    Also bei 2003 wird's soweit ich das sehe auch mit

    Visual Basic-Quellcode

    1. strSQL = "SELECT * FROM tblAdressen WHERE tblAdressen.NAME1 LIKE '%XYZ%'"

    was. Also sehe ich das bei 2000 als wahrscheinlichsten Lösungsansatz ^^

    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

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

    bei Access ist es auch ein %
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ja, HerrFrie, hast Recht!

    Ich hatte den Post anders interpretiert. Sorry und danke für den Hinweis!

    Ich schrieb übrigens ja auch, dass folgende Zeile nicht funktioniert

    Quellcode

    1. strSQL = "SELECT *, tblAdressen.NAME1 FROM tblAdressen ORDER BY tblAdressen.NAME1"


    Es muss korrekt heißen:

    Quellcode

    1. strSQL = "SELECT * FROM tblAdressen ORDER BY NAME1"


    Bin VB6-Umsteiger und habe noch so meine liebe Not mit der Syntax.

    Gruß,
    Schorsch
    Also nen SQL Statement ist in VB6 und VB.Net nicht anders oO das wird doch von der Datenbank und nicht der Programmiersprache vorgegeben. Wenn du auf ne OpenEdge Datenbank oder ne MySQL oder Oracle Datenbank zugreifst (nur Beispiele) gelten da deren SQL Vorgaben wie in deinem Fall die von Acccess
    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