[delphi] ADO + Access + Blad skladniowy klauzuli FROM

0

Hej,
już mówie o co chodzi. A więc tak, baza w MS access 2002.
w Delphi mam ADO Connection
Dostawca usług: Microsoft JET 4.0 OLE DB Privder
w zaawansowanych Share Deny None, test połączenia jest ok.

Dalej TADOQuery.

i kawałek kodu:

Dane.Query.SQL.Clear;
Dane.Query.SQL.Add('Select login, haslo, Nazwa FROM User');
Dane.Query.SQL.Add('where login = :login and haslo = :haslo');
Dane.Query.Parameters.ParamByName('login').Value := login.Text;
Dane.Query.Parameters.ParamByName('haslo').Value := haslo.Text;
Dane.Query.Active := true;

if Dane.Query.IsEmpty then
        showmessage('Blad') else showmessage('ok!');

Po uruchomieniu aplikacja zwraca błąd o treści "Błąd skłądniowy w klauzuli FROM"
nie bardzo wiem gdzie szukac przyczyny, właśnie skończyłem jednąaplikację, baza w tym samym accessie, to samo ADO, robiłem setki takich zapytań i było ok a teraz nagle mu odbiło :( POMOCY

Dzięk!!!

0
  1. czy na pewno zgadzają Ci się nazwy kolumn
  2. zamiast Dane.Query.Parameters.ParamByName('login').Value lepiej Dane.Query.Parameters.ParamByName('login').AsString (lub AsInnyTyp wg typu kolumny)
0

nazwy kolumn na pewno się zgadzają a sposób na przypisanie wartości parametrom nie ma znaczenia, ograniczyłem zapytanie do Select * frm User i kazałem po prostu wyświetlić message ok lub bład w zależności od Query.IsEmpty, dzieje się dokładnie tak samo :/

0

Skoro IsEmpty, to znaczy, że zapytanie nic nie zwróciło. Najprościej takie rzeczy sprawdzać bezpośrednio w Accessie - stworzyć tam identyczną kwerendę i jeżeli ona nie działa tak jakbyś chciał, to znaczy, że albo jest źle skonstruowana, albo w bazie takie dane, o które pytasz wcale się nie znajdują.

//Dopisane:
No to napisałem, żeby sprawdził swoją kwerendę w Accessie - będzie wiedział czy wina jest po stronie błędnego zapytania (co by sugerował ten komunikat), czy też coś innego. Ja osobiście stawiałbym tu na złą nazwę (skoro jedne kolumny nazywa wielką literą, inne małą, to o pomyłkę nietrudno w takich warunkach).
A pisanie, że komponenty ADO jakoś dziwnie się zachowują, że spróbuj takie czy siakie jest delikatnie mówiąc nieprofesjonalne. Też z nimi swego czasu miałem problemy i wszystkie okazały się moimi błędami. Nie twierdze, że są lepsze czy gorsze. Twierdzę jedynie, że nie do każdej awarii systemu trzeba formatować i od nowa go stawiać (ot takie porównanie...)

0
Smiglo napisał(a)

Skoro IsEmpty, to znaczy, że zapytanie nic nie zwróciło. Najprościej takie rzeczy sprawdzać bezpośrednio w Accessie - stworzyć tam identyczną kwerendę i jeżeli ona nie działa tak jakbyś chciał, to znaczy, że albo jest źle skonstruowana, albo w bazie takie dane, o które pytasz wcale się nie znajdują.

tylko, że on wcześniej wywala błąd "Błąd skłądniowy w klauzuli FROM"

Co do samego problemu to kiedyś miałem podobnie z ADO. Zamieniłem je na ZeosLib i wszystko zaczeło grać. Nie wiem czym to jest spowodowane ale ADO czasami dziwnie się zachowuje. Spróbuj Zeosów i powiedz czy tam działa

0

Dzięki Misiekd, sprubuje posiedziec nad tym w weekend, na pewno dam znać jak to wyszło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1