Avatar billede ttopholm Nybegynder
16. august 2005 - 10:03 Der er 12 kommentarer og
1 løsning

join og asp og udskrivning

Jeg har den sætning..

SQL = "SELECT * FROM ewire as e, ordre as o WHERE e.status = 'lukket' AND firmaID=" & session("firmaID") & " AND e.ordreid=o.ordrenr"
SET rs = conn.execute(SQL)

Men når jeg vil udskrive noget f.eks.

<a href="default.asp?valg=2&KundeID=<%= rs("e.kundeid") %>&ordreid=<%= rs("o.ordreid") %>"><%= rs("e.ordreid") %></a>

Så fejler den her: rs("e.orderid")
og siger den ikke kan finde e.ordreid men ordreeksistere i tabellen og e. er fordi det er i ewire-tabellen.

Hvorfor gør den det, virker fint med access og mysql
Avatar billede cpufan Juniormester
16. august 2005 - 10:27 #1
firmaID mangler en tabelid (enten e eller o)

din sql bør starte sådan: "Select * from ewire e, ordre o where......

da ordreid er den tuple der bliver sammenlignet på, kunne du jo prøve at om du ikke kan udskrive o.ordreid istedet for.
Avatar billede ttopholm Nybegynder
16. august 2005 - 10:40 #2
nej firmaid mangler ikke det, da den kun står i den ene tabel, så behøves det ikke.

jeg ved ikke hvad du mener med min sql skal starte som du skriver, det gør den jo ;-)
du skal jo have den i en variabel for at kalde den i asp.

Ja men kan gøre det, men det var ikke det jeg ville med at skrive rundt på, da nogle af dem eksistere begge steder og så udskriver den, den forkerte.
Avatar billede cpufan Juniormester
16. august 2005 - 10:48 #3
øhm jeg mener naturligvis o.ordrenr , da du joiner på: e.ordreid = o.ordrenr

din sql starter lidt anderledes da du bruger ordet "as"

men iøvrigt opdagede jeg først at det var hjælp til mssql, efter jeg havde trykket på "send" så måske jeg giver dårlig hjælp.......
Avatar billede ttopholm Nybegynder
16. august 2005 - 10:52 #4
Du behøver ikke at bruge as, men det giver det samme.
Avatar billede ttopholm Nybegynder
16. august 2005 - 10:52 #5
som hvis du ikke bruger det.
Avatar billede cpufan Juniormester
16. august 2005 - 11:15 #6
ja det er nok rigtigt,
hvad med o.ordrenr har du prøvet med det?
Avatar billede ttopholm Nybegynder
16. august 2005 - 11:27 #7
den vil slet ikke æde noget med o eller e. kun vis jeg skriver uden det
Avatar billede cpufan Juniormester
16. august 2005 - 12:16 #8
nej det er jo en ny "tabel" der kommer ud hvor records er samlet.
du kan evt udskrive med kolonnenumre: rs(1) rs(2) osv. hvor kolonnerne fra tabellen ewire bliver talt først
Avatar billede cpufan Juniormester
16. august 2005 - 12:17 #9
hm ignorer blot mine kommentarer :O, jeg tror ikke mine små grå er med mig i dag..........
Avatar billede ldanielsen Nybegynder
16. august 2005 - 12:51 #10
ADO tillader ikke at man henviser til en kolonne med tableName.colName, så hvis der er flere kolonner der hedder ordreid skal du bruge AS.

I stedet for SELECT * skal du altså skrive SELECT col1, col2, col3, osv. Det vil sige at du skal nævne alle de kolonner du skal bruge, fx. SELECT e.ordreid AS e_ordreid, o.ordreid AS o_ordreid ...

Undlad i det hele taget at bruge SELECT *. Du hjælper serveren ved at nævne hvilke kolonner du vil have ud, og så kan du også undgå at select'e kolonner som du alligevel ikke får brug for.
Avatar billede ttopholm Nybegynder
16. august 2005 - 13:33 #11
skal jeg også nævne dem jeg kun bruger i select sætningen, og ikke udskriver f.eks. firmaid
Avatar billede ttopholm Nybegynder
16. august 2005 - 13:35 #12
har lige prøvet uden at nævne firmaid, og der giver den ikke fejl, så det skal den vel ikke
Avatar billede ldanielsen Nybegynder
16. august 2005 - 14:26 #13
Du skal kun nævne dem du skal bruge (udskrive). Dem fra WHERE, ORDER BY osv. behøver ikke blive nævnt

Tak for point
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