Announcement

Collapse
No announcement yet.

Parameterproblem beim Zugriff auf Datenbank

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

  • Parameterproblem beim Zugriff auf Datenbank

    Ich hab wieder ein Problem:
    Ich will mit VB auf eine Datenbank zugreifen und da ich eine Suche eingebaut habe, will/muss ich mit Parametern arbeiten (hat mir mein Lehrmeister gesagt ^^).
    Nun zum Problem:
    Es hat irgendein Problem mit meinem Integerfeld und das schon beim laden :/
    Weiss vielleicht wer warum?


    Der Code:
    myCommand.CommandText = "SELECT OPreis AS Preis FROM Objekte WHERE OPreis >= @OPreis;"
    myCommand.Parameters.Add("@OPreis", OleDb.OleDbType.VarChar, 30).Value = "*"
    myAdapter.Fill(myTable) <<--- Hier kommt der Fehler



    Fehler:
    OleDbException wurde nicht behandelt.
    Datentypen in Kriterienausdruck unverträglich.

    Mfg Ich

  • #2
    Hallo Melvyn!

    Probiers vielleicht mal mit einem % anstelle des *.
    *-- robert.oh. --*

    Comment


    • #3
      Hatte ich auch schon drin, funktioniert leider auch nicht...

      Comment


      • #4
        Auf welches Datenbank-System möchtest du zugreifen?
        .NET GUI - DIE Community für GUI-Entwickler

        Living.NET - Blog :: Live Blog :: .NET Casts

        Hol' dir jetzt dein kostenloses .NET BlogBook.

        Comment


        • #5
          Öhm... Was das heissen sollte, weiss ich jetzt nicht genau ^^"
          Ist eine Access 2003-Datenbank, falls du das wissen möchtest

          Comment


          • #6
            Ich bin mir jetzt zwar nicht 100%ig sicher, aber ich denke, dass Access 2003 keine benannten Parameter kennt. Anstelle dessen immer nur ein ? verwenden und die Parameter in der korrekten Reihenfolge setzen. Also in etwa so:
            Code:
             myCommand.CommandText = "SELECT OPreis AS Preis FROM Objekte WHERE OPreis >=?;"
             myCommand.Parameters.Add("OPreis", OleDb.OleDbType.VarChar, 30).Value = "*";
            Was du vorher versuchen könntest: Verwende nur mal mein myCommand.Parameters.Add. Also eine Angabe des Namens ohne @ beim Hinzufügen des Parameters. Eventuell liegt es daran.
            .NET GUI - DIE Community für GUI-Entwickler

            Living.NET - Blog :: Live Blog :: .NET Casts

            Hol' dir jetzt dein kostenloses .NET BlogBook.

            Comment


            • #7
              Ok, ich hab es mit einem "?" und ohne @ probiert, klappt aber leider auch so nicht :/

              Comment


              • #8
                Also hier ein Beispiel, wie es bei mir tadellos funktioniert:
                Code:
                OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb");
                con.Open();
                
                OleDbCommand com = con.CreateCommand();
                com.CommandText = "SELECT * FROM tTest WHERE id>=@id";
                
                OleDbParameter param = new OleDbParameter();
                param.ParameterName = "id";
                param.OleDbType = OleDbType.Integer;
                param.Value = 1;
                
                com.Parameters.Add(param);
                
                OleDbDataAdapter adapter = new OleDbDataAdapter(com);
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                
                con.Close();
                Vielleicht hilft dir dieses Beispiel weiter.
                .NET GUI - DIE Community für GUI-Entwickler

                Living.NET - Blog :: Live Blog :: .NET Casts

                Hol' dir jetzt dein kostenloses .NET BlogBook.

                Comment


                • #9
                  Ok, ich hab jetzt weiter daran herumgebastelt und jetzt funktionierts

                  Nun ist im Formload anstelle vom "*" eine 0, wodurch alle ausgewählt werden, die älter sind als 0 (was ja logisch ist). Mit dem klappt es nun ^^

                  Ich danke recht herzlich für eure Hilfe ^^

                  Mfg Ich

                  Comment


                  • #10
                    Originally posted by Melvyn View Post
                    Ich hab wieder ein Problem:
                    Ich will mit VB auf eine Datenbank zugreifen und da ich eine Suche eingebaut habe, will/muss ich mit Parametern arbeiten (hat mir mein Lehrmeister gesagt ^^).
                    Nun zum Problem:
                    Es hat irgendein Problem mit meinem Integerfeld und das schon beim laden :/
                    Weiss vielleicht wer warum?


                    Der Code:
                    myCommand.CommandText = "SELECT OPreis AS Preis FROM Objekte WHERE OPreis >= @OPreis;"
                    myCommand.Parameters.Add("@OPreis", OleDb.OleDbType.VarChar, 30).Value = "*"
                    myAdapter.Fill(myTable) <<--- Hier kommt der Fehler



                    Fehler:
                    OleDbException wurde nicht behandelt.
                    Datentypen in Kriterienausdruck unverträglich.

                    Mfg Ich
                    hast du "myTable as new DataTable" deklariert?
                    Man muss schon eine ganze Menge wissen, um zu erkennen dass man nichts weiss.

                    Comment

                    Working...
                    X