|
| Problemer med SQL Server 7.0 Fra : Steen Nielsen |
Dato : 26-04-01 11:58 |
|
I forbindelse med portering af en database fra MS Access til SQL Server 7.0
er jeg stødt på et irriterende problem. Nedenstående konstruktion virker
fint i Access men returnerer ingen rækker når den henter fra SQL Server. Er
der nogen som kan se fejlen??
Med venlig hilsen
Steen Nielsen
AQuery.SQL.Clear;
AQuery.SQL.Append('SELECT ID, brugernavn, Password, userlevel');
AQuery.SQL.Append('FROM brugernavn');
AQuery.SQL.Append('WHERE ((brugernavn=' + '''' + AUserName + '''' + ')' +
' AND (Password=' + '''' + AUserPass + '''' +
'))');
try
AQuery.Open;
AQuery.First;
while not AQuery.Eof do
begin
if (AQuery.FieldByName('userlevel').AsInteger = 90) then
UserFound := True;
AQuery.Next;
end;
except
UserFound := False;
end;
| |
Stig Johansen (26-04-2001)
| Kommentar Fra : Stig Johansen |
Dato : 26-04-01 13:56 |
|
Hej.
"Steen Nielsen" <steen.n.nielsen@post.tele.dk> wrote in message
news:9c8v4u$g3s$1@news.inet.tele.dk...
> I forbindelse med portering af en database fra MS Access til SQL Server
7.0
> er jeg stødt på et irriterende problem. Nedenstående konstruktion virker
> fint i Access men returnerer ingen rækker når den henter fra SQL Server.
Er
> der nogen som kan se fejlen??
>
> Med venlig hilsen
>
> Steen Nielsen
>
>
> AQuery.SQL.Clear;
> AQuery.SQL.Append('SELECT ID, brugernavn, Password, userlevel');
> AQuery.SQL.Append('FROM brugernavn');
> AQuery.SQL.Append('WHERE ((brugernavn=' + '''' + AUserName + '''' + ')'
+
> ' AND (Password=' + '''' + AUserPass + ''''
+
> '))');
> try
> AQuery.Open;
> AQuery.First;
> while not AQuery.Eof do
> begin
> if (AQuery.FieldByName('userlevel').AsInteger = 90) then
> UserFound := True;
> AQuery.Next;
> end;
> except
> UserFound := False;
Prøv lige at udskrive en evt. en fejl her.
> end;
>
mvh
Stig Johansen.
| |
Steen Nielsen (26-04-2001)
| Kommentar Fra : Steen Nielsen |
Dato : 26-04-01 16:53 |
|
Hej Stig,
Lader sig desværre ikke gøre, der opstår tilsyneladende ingen fejl. Queryen
returnerer ingen rækker og genererer ingen fejlmeddelelse heller ikke hvis
jeg prøver at fange den under except.
Mvh Steen Nielsen
"Stig Johansen" <e08@oes.dk> wrote in message
news:9c95t6$16s$1@sunsite.dk...
> Hej.
> "Steen Nielsen" <steen.n.nielsen@post.tele.dk> wrote in message
> news:9c8v4u$g3s$1@news.inet.tele.dk...
> > I forbindelse med portering af en database fra MS Access til SQL Server
> 7.0
> > er jeg stødt på et irriterende problem. Nedenstående konstruktion virker
> > fint i Access men returnerer ingen rækker når den henter fra SQL Server.
> Er
> > der nogen som kan se fejlen??
> >
> > Med venlig hilsen
> >
> > Steen Nielsen
> >
> >
> > AQuery.SQL.Clear;
> > AQuery.SQL.Append('SELECT ID, brugernavn, Password, userlevel');
> > AQuery.SQL.Append('FROM brugernavn');
> > AQuery.SQL.Append('WHERE ((brugernavn=' + '''' + AUserName + '''' +
')'
> +
> > ' AND (Password=' + '''' + AUserPass +
''''
> +
> > '))');
> > try
> > AQuery.Open;
> > AQuery.First;
> > while not AQuery.Eof do
> > begin
> > if (AQuery.FieldByName('userlevel').AsInteger = 90) then
> > UserFound := True;
> > AQuery.Next;
> > end;
> > except
> > UserFound := False;
> Prøv lige at udskrive en evt. en fejl her.
>
> > end;
> >
>
> mvh
> Stig Johansen.
>
>
>
| |
Stig Johansen (27-04-2001)
| Kommentar Fra : Stig Johansen |
Dato : 27-04-01 04:57 |
|
Hej igen.
"Steen Nielsen" <steen.n.nielsen@post.tele.dk> wrote in message
news:9c9gf0$b2i$1@news.inet.tele.dk...
> Hej Stig,
>
> Lader sig desværre ikke gøre, der opstår tilsyneladende ingen fejl.
Queryen
> returnerer ingen rækker og genererer ingen fejlmeddelelse heller ikke hvis
> jeg prøver at fange den under except.
Ok, så prøver vi noget andet + et par råd.
* Manglende rækker
Hvis du bruger BDE, skal du være opmærksom på, at den ikke understøtter N*
typer i SQL 7.0. Hvis du har disse typer, som vistnok er default, skal du
bare rette dem i EM.
* Fejlhåndtering
Med hensyn til din konstruktion, foretrækker jeg personligt følgende:
TRY
Query.open;
DoSomeThing;
EXCEPT
HerErDetAltsåEnSystemFejlDerBørTagesActionPå;
END;
* Konstruktion
Det ser ud som om, du kun skal søge på userlevel 90. Der er ingen grund til
at udtage et recordsæt og bladre det igennem.
eksempel:
AQuery.SQL.Clear;
AQuery.SQL.Append('SELECT ID, brugernavn, Password, userlevel');
AQuery.SQL.Append('FROM brugernavn');
AQuery.SQL.Append('WHERE brugernavn=' + '''' + AUserName + '''' +
' AND Password=' + '''' + AUserPass + '''' + '
AND userlevel=90');
try
AQuery.Open;
UserFound := NOT AQuery.Eof;
AQuery.Close;
except
SeOvenFor;
end;
* Hint hvis du bruger ADO
Hvis du bruger ADO, skal du være opmærksom på, at der sker en hel masse ved
ændring af Query-strengen. Det er derfor en god ide at benytte denne
konstruktion:
Query.SQL.Beginupdate;
Query.SQL.Clear;
Query.SQL.Add(l1);
Query.SQL.Add(l2);
....
Query.SQL.Endupdate;
* Slut
Det var alt for nu, jeg håber du får det til at køre.
--
Med venlig hilsen/Best Regards
Stig Johansen - stig@w3data.dk
W3 Data - mailto@w3data.dk
| |
Steen Nielsen (28-04-2001)
| Kommentar Fra : Steen Nielsen |
Dato : 28-04-01 16:18 |
|
Hej Stig,
Har fået det til at køre, det var mit ODBC Alias der var problemet, tak for
rådene.
Mvh. Steen
"Stig Johansen" <stig@w3data.dk> wrote in message
news:9caqis$ago$1@sunsite.dk...
> Hej igen.
>
>
> "Steen Nielsen" <steen.n.nielsen@post.tele.dk> wrote in message
> news:9c9gf0$b2i$1@news.inet.tele.dk...
> > Hej Stig,
> >
> > Lader sig desværre ikke gøre, der opstår tilsyneladende ingen fejl.
> Queryen
> > returnerer ingen rækker og genererer ingen fejlmeddelelse heller ikke
hvis
> > jeg prøver at fange den under except.
>
> Ok, så prøver vi noget andet + et par råd.
>
> * Manglende rækker
> Hvis du bruger BDE, skal du være opmærksom på, at den ikke understøtter N*
> typer i SQL 7.0. Hvis du har disse typer, som vistnok er default, skal du
> bare rette dem i EM.
>
> * Fejlhåndtering
> Med hensyn til din konstruktion, foretrækker jeg personligt følgende:
> TRY
> Query.open;
> DoSomeThing;
> EXCEPT
> HerErDetAltsåEnSystemFejlDerBørTagesActionPå;
> END;
>
> * Konstruktion
> Det ser ud som om, du kun skal søge på userlevel 90. Der er ingen grund
til
> at udtage et recordsæt og bladre det igennem.
> eksempel:
> AQuery.SQL.Clear;
> AQuery.SQL.Append('SELECT ID, brugernavn, Password, userlevel');
> AQuery.SQL.Append('FROM brugernavn');
> AQuery.SQL.Append('WHERE brugernavn=' + '''' + AUserName + '''' +
> ' AND Password=' + '''' + AUserPass + '''' +
'
> AND userlevel=90');
> try
> AQuery.Open;
> UserFound := NOT AQuery.Eof;
> AQuery.Close;
> except
> SeOvenFor;
> end;
>
> * Hint hvis du bruger ADO
> Hvis du bruger ADO, skal du være opmærksom på, at der sker en hel masse
ved
> ændring af Query-strengen. Det er derfor en god ide at benytte denne
> konstruktion:
> Query.SQL.Beginupdate;
> Query.SQL.Clear;
> Query.SQL.Add(l1);
> Query.SQL.Add(l2);
> ...
> Query.SQL.Endupdate;
>
> * Slut
> Det var alt for nu, jeg håber du får det til at køre.
>
> --
> Med venlig hilsen/Best Regards
> Stig Johansen - stig@w3data.dk
> W3 Data - mailto@w3data.dk
>
>
>
>
| |
|
|