Avatar billede afm Nybegynder
01. maj 2001 - 22:22 Der er 15 kommentarer og
1 løsning

count i MySQL og ASP(vb)

Jeg har et problem med en count i MySql.
Jeg laver en count,hvor jeg join\'er 2 tabeller og når jeg kører den i phpadmin virker den OK,men når jeg kører den i min asp-side, som er skrevet i VB, får jeg ikke noget retur, men en EOF
Jeg anvender følgende connect:
Set objconn = Server.CreateObject (\"ADODB.Connection\")
objconn.Open strConnect
set objRec = objConn.Execute(strQuery)
Er der nogen der har et bud ??
Avatar billede sth Novice
01. maj 2001 - 22:33 #1
jeg bruger noget der ligener dette:
SQLserveradr=\"xxx.xxx.xxx.xx\"
SQLdatabase=\"xxxxxxxx\"   
SQLlogin=\"root\"
SQLpassword=\"\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"driver={MySql};server=\"& SQLserveradr &\";database=\"& SQLdatabase &\";uid=\"& SQLlogin &\";pwd=\"& SQLpassword

SQLstmt =\"SELECT * from Users WHERE userID=\"&session(\"userID\")
Conn.Execute (SQLstmt)

Set rs = conn.Execute(SQLstmt)


response.write  rs(\"UserID\")
response.write rs(\"Username\")
Avatar billede perla Nybegynder
01. maj 2001 - 22:33 #2
Lidt mere kode, SQL sætningen ville være godt.

Men har du husket at count(*) ikke kan hentes i ASP, så du er nødt til at give den et alias.

-Per
Avatar billede perla Nybegynder
01. maj 2001 - 22:36 #3
Lav sql statementet uden where betingelser, for at være sikker på du får noget tilbage. Efterfølgende prøv at manuelt tildele den variabel som er kriteriet

-Per
Avatar billede sth Novice
01. maj 2001 - 22:38 #4
og hvis jeg vil lave en SELECT COUNT(*), ja så ser den ca. sådan ud:
SQLstmt =\"SELECT COUNT(*) from Users\"
Avatar billede perla Nybegynder
01. maj 2001 - 22:43 #5
Det vil virke men du kan ikke få værdien ud. Du skal bruge

SQLstmt =\"SELECT COUNT(*) AS Antal from Users\"

-Per
Avatar billede sth Novice
01. maj 2001 - 22:50 #6
denne virker er testet:
SQLserveradr=\"xxx.xxx.xxx.xx\"
SQLdatabase=\"xxxxxxxx\"   
SQLlogin=\"root\"
SQLpassword=\"\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"driver={MySql};server=\"& SQLserveradr &\";database=\"& SQLdatabase &\";uid=\"& SQLlogin &\";pwd=\"& SQLpassword

SQLstmt =\"SELECT COUNT(*) AS Antal from Users\"
Conn.Execute (SQLstmt)

Set rs = conn.Execute(SQLstmt)


response.write  rs(\"antal\")
Avatar billede afm Nybegynder
01. maj 2001 - 22:58 #7
sådan ser mit sql ud:
strQuery = \"select count(salgsliste.lotnr) as antallotnr, lande.land,\"
  if strSprog = 1 then
      strQuery = strQuery & \"lande.landenavn_dk AS landenavn \"
      elseIf strSprog = 2 then
            strQuery = strQuery & \"lande.landenavn_ty AS landenavn \"
          else
            strQuery = strQuery & \"lande.landenavn_en AS landenavn \"
  End If
  strQuery = strQuery & \"from salgsliste,lande where lande.land=salgsliste.land and salgsliste.solgt=0 group by 2,3 order by 3\"
Avatar billede perla Nybegynder
01. maj 2001 - 23:09 #8
Lav en Response.write inden eksekveringen og se på den. Stat med at lave en simpel count, uden where, group by, order by. Det er min erfaring at man ikke kan overskue det. Count blandet med group og order kan i mange tilfælde ikke lade sig gøre.

Giv os resultatet af response write\'n.

-Per
Avatar billede afm Nybegynder
01. maj 2001 - 23:23 #9
Hej
Jeg får ikke noget svar(blank)
Jeg har kopieret mit sql fra phpadmin, hvor det virker, men det ser ud som om den returnerer en EOF men jeg kan ikke forstå hvorfor, jeg har det samme sql, som kører med en access-database, her er syntaksen for join lidt anderledes men den fungerer.
Avatar billede perla Nybegynder
01. maj 2001 - 23:27 #10
Beregnings funktionerne(count, sum,..) i Access er meget begrænset set med SQL øjne. Det var sådan set SQL strengen jeg ville at du udskrev på skærmen, ikke det den returnerer(eller ikke returnerer)

-Per
Avatar billede sth Novice
01. maj 2001 - 23:27 #11
har du prøvet at lave en simpel count, i stil med:
SELECT COUNT(*) AS Antal from min_tabel

ellers prøv det
Avatar billede sth Novice
03. maj 2001 - 22:15 #12
Hvaaaa sker der noget :)
Avatar billede afm Nybegynder
03. maj 2001 - 22:49 #13
Hej sth

Ja, jeg har lige prøvet med en simpel count og får resultatet 44, som er der antal rækker i tabellen. Hvis jeg sætter et felt mere på select\'en og en group by returneres EOF
Avatar billede perla Nybegynder
03. maj 2001 - 23:24 #14
Vis os lige sætningen :-)
Avatar billede afm Nybegynder
04. maj 2001 - 16:10 #15
Hej

Denne query:
select count(salgsliste.lotnr) as antallotnr from salgsliste
giver resultatet 44, som er ok.
Denne query:
select count(salgsliste.lotnr) as antallotnr, salgsliste.land from salgsliste group by salgsliste.land order by salgsliste.land eof
Giver ikke noget retur. Jeg undrer hvor den eof kommer fra sidst i queryen, for jeg har ikke skrevet det, sådan ser den ud efter den er udført:
select count(salgsliste.lotnr) as antallotnr, salgsliste.land from salgsliste group by salgsliste.land order by salgsliste.land.
Jeg har en mistanke om at det er den eof inden udførelsen som er skyld i det hele.
Som Polle ville sige:  jeg fatter og aldrig en ski\'.
Avatar billede perla Nybegynder
04. maj 2001 - 17:53 #16
Send mig databasen, eller tabellen som en CSV fil skal jeg kikke på det. PerLA@mail.tele.dk

-Per
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester