OleDbCommand - pobieranie rekordu

OleDbCommand - pobieranie rekordu
Luki91
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Lokalizacja:Bytom
  • Postów:81
0

Cześć,

Mam następujący problem i pustkę w głowie co do rozwiązania.

Kopiuj
 
private void button_load_Click(object sender, EventArgs e)
        {
            String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                            textBox_path.Text +
                            ";Extended Properties='Excel 12.0 XML;HDR=YES;';";

            OleDbConnection con = new OleDbConnection(constr);
            OleDbCommand oconn = new OleDbCommand("SELECT *  FROM [Arkusz1$] WHERE Cena=83,13", con);
            con.Open();

            OleDbDataAdapter sda = new OleDbDataAdapter(oconn);
            DataTable data = new DataTable();
            sda.Fill(data);
            MainGridView.DataSource = data;

     
        }

Powyższy kod nie działa i nie pobiera mi wartości, którą chce pobrać z pliku Excela wyrzucając mi błąd : An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll Additional information: Data type mismatch in criteria expression."

Dziwi mnie to dlatego, że działa mi gdy np. zadam takie zapytanie :

Kopiuj
 
OleDbCommand oconn = new OleDbCommand("SELECT * FROM [Arkusz1$] WHERE Jm = 'kg'", con);

W czym może tkwić problem ?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:4 dni
  • Lokalizacja:Wrocław
1

Może wartość ceny też trzeba podać w apostrofach? Albo użyć uniwersalnego, a nie polskiego separatora dziesiętnego (czyli kropki).

Luki91
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Lokalizacja:Bytom
  • Postów:81
0

Błąd na poziomie podstawówki. Istotnie należy użyć kropki....ale bez apostrofów.

Kopiuj
 
OleDbCommand oconn = new OleDbCommand("SELECT * FROM [Arkusz1$] WHERE Cena = 0.00", con);
edytowany 1x, ostatnio: Luki91
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • Postów:6610
0

przecinek oddziela np. kolejne pola i tutaj wygląda to tak SELECT * FROM [Arkusz1$] WHERE Cena=83, 13, gdzie zarówno , jak i 13 są całkowicie nie na miejscu. Nigdzie w SQLu nie ma przecinka jako separatora dziesiętnego


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.