/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
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
>
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste