[C++, ADO-SQL] pFields->GetItem (index)->GetValue () - throws an exception when field is empty - błąd pustego pola
Ostatnio zmodyfikowano 2013-04-23 20:08
berkov Temat założony przez niniejszego użytkownika |
[C++, ADO-SQL] pFields->GetItem (index)->GetValue () - throws an exception when field is empty - błąd pustego pola » 2013-04-23 09:51:43 hey ho Uzywam ADO do kontaktu z WinAPI do db na MS Access. Wszystko dziala idelanie, bez problemu zapisuje i odczytuje, madre to ADO choc czasami troche upierdliwe. W kazdym badz razie nie moge sobie poradzic z jednym bledem, a mianowicie keidy zczytuje wartosci pol a jedno pole jest puste (blank) to GetValue() wyrzuca blad (exception): pFields->GetItem( nIndex )->GetValue() ) oczywiscie moge to wychwycic przez try catch (_com_error & ) ale nie chce bo uzywam tego do "prawdziwych bledow". Nie chce tez zmuszac uzytownika do wypelniania wszystkich pol, bo niektore nie sa obowiazkowe - jesli pole jest puste to chce otrzymac pointer do pustego stringu ('\0'): _bstr_t jakisstring = _bstr_t( pFields->GetItem( nIndex )->GetValue() ); ale niestety program natychmiast wywala blad. jakies pomysly? berkov |
|
DejaVu |
» 2013-04-23 12:51:22 |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-04-23 13:58:13 @DejaVu nie za bardzo rozumiem ten kod. btw, link jest do mojego posta :-) |
|
DejaVu |
» 2013-04-23 14:13:00 A działa? |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-04-23 14:24:29 hehe hmm.. nie wiem, ale az jestem ciekawy, wroce do domum, wrzuce w kompilator i sprawdze wieczorem :-) |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-04-23 19:10:28 Niestety, nie dziala, pFields->GetItem( nIndex ) zawsze zwraca true bo zawsze cos w nim jest, nawet jesli indeks odnosi sie do pustego pola. Okazuje sie ze problem nie jest w GetValue(), ktory myslalem ze nie potrafi "obsluzyc" pustego pola ale w _bstr_t, ktory jako wskaznik nie potrafi wskazac na pusty string. Najpierw trzeba uzyc variant_t, zobaczyc czy nie puste i dopiero wpisac do _bstr_t variant_t vtName = pFields->GetItem( nIndex )->GetValue(); _bstr_t jakisstring = _bstr_t(( vtName.vt == VT_NULL ) ? " " : vtName );
zrodlo: http://forums.codeguru.com/showthread.php?350603-ADO-error-reading-an-empty-fielddzieki |
|
DejaVu |
» 2013-04-23 20:08:09 No to zamykam skoro znalazłeś rozwiązanie :) Mimo wszystko chodziło o nulla :) |
|
« 1 » |