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

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
ADO og reference til kolonne-titler i sted~
Fra : Jesper Stocholm


Dato : 23-08-01 09:33

Jeg har lagt mærke til, at ADO refererer til kolonnernes titler i
en tabel i stedet for deres navne. Er det en måde at undgå dette
på ?


Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Anders Holbøll (23-08-2001)
Kommentar
Fra : Anders Holbøll


Dato : 23-08-01 10:03

Jesper Stocholm wrote:
>
> Jeg har lagt mærke til, at ADO refererer til kolonnernes titler i
> en tabel i stedet for deres navne. Er det en måde at undgå dette
> på ?

Hvad er forskellen på et navn og en titel? Hvornår mener du at ADO
"refererer til [navnet/titlen]"?

--
Anders

Jesper Stocholm (23-08-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 23-08-01 10:27

Anders Holbøll wrote in dk.edb.internet.webdesign.serverside.asp:
> Jesper Stocholm wrote:
> >
> > Jeg har lagt mærke til, at ADO refererer til kolonnernes titler i
> > en tabel i stedet for deres navne. Er det en måde at undgå dette
> > på ?
>
> Hvad er forskellen på et navn og en titel? Hvornår mener du at ADO
> "refererer til [navnet/titlen]"?
>

Hvis du fx har oprettet en tabel med følgende DDL:

CREATE TABLE MYtable
(Row1 integer TITLE 'My age',
Row2 VHARCHAR(30) TITLE 'My Name',
Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
PRIMARY KEY (Row3)
);

Så kan man ikke hente værdierne med

rs("Row1")

... men skal i stedet referere til titlen som i

rs("My Email")

Og det er det, som jeg synes er lidt omvendt. I SQL-statement, der jo
går direkte til databasen, refererer man jo til navnene på kolonnerne
... og ikke til titlerne - som i

SELECT
Row1,Row2,Row3
FROM
MYTable

Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Anders Holbøll (23-08-2001)
Kommentar
Fra : Anders Holbøll


Dato : 23-08-01 10:42

Jesper Stocholm wrote:
> Anders Holbøll wrote:
> > Jesper Stocholm wrote:
> > >
> > > Jeg har lagt mærke til, at ADO refererer til kolonnernes titler
> > > i en tabel i stedet for deres navne. Er det en måde at undgå
> > > dette på ?
>
> Hvis du fx har oprettet en tabel med følgende DDL:
> CREATE TABLE MYtable
> (Row1 integer TITLE 'My age',
> Row2 VHARCHAR(30) TITLE 'My Name',
> Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
> PRIMARY KEY (Row3)
> );
>
> Så kan man ikke hente værdierne med
> rs("Row1")
>
> .. men skal i stedet referere til titlen som i
> rs("My Email")

Hm, det er nok fordi jeg ikke lige kunne komme på en god grund til at
bruge title på kolonnerne. Hvilken database-server sidder du med?
Anyway. Det må da afhænge af hvordan du skriver din sql? Hvis du skriver
"SELECT * FROM MYtable" kommer det måske forkert, men kommer det ikke
"rigtigt" ud hvis du skriver "SELECT Row1, Row2, Row3 FROM MYtable"?

--
Anders

Jesper Stocholm (23-08-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 23-08-01 11:38

Anders Holbøll wrote in dk.edb.internet.webdesign.serverside.asp:
> Jesper Stocholm wrote:
> >
> > Hvis du fx har oprettet en tabel med følgende DDL:
> > CREATE TABLE MYtable
> > (Row1 integer TITLE 'My age',
> > Row2 VHARCHAR(30) TITLE 'My Name',
> > Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
> > PRIMARY KEY (Row3)
> > );
> > Så kan man ikke hente værdierne med
> > rs("Row1")
> > .. men skal i stedet referere til titlen som i
> > rs("My Email")
>
> Hm, det er nok fordi jeg ikke lige kunne komme på en god grund til at
> bruge title på kolonnerne.

Det giver et pænere billede, når man betragter data i table-view i det
værktøj man nu sidder og arbejder med. Det er lidt nemmere - semantisk - at
forstå en kolonne-titel som "Midlertidigt navn" end navnet på kolonnen, som
fx. kunne være "str_intmed_name"

> Hvilken database-server sidder du med?

Det er TeraData jeg sidder og arbejder med ... men jeg mener ligeså godt,
at problemet kan opstå i MySQL og MSSQL.

> Anyway. Det må da afhænge af hvordan du skriver din sql? Hvis du skriver
> "SELECT * FROM MYtable" kommer det måske forkert, men kommer det ikke
> "rigtigt" ud hvis du skriver "SELECT Row1, Row2, Row3 FROM MYtable"?
>

Det gør det ikke. Jeg specificerer alle kolonner med navn i min
SQL-statement, så det er ikke dér problemet er. Hvor det så er er derimod
et godt spørgsmål.

:)

Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Anders Holbøll (23-08-2001)
Kommentar
Fra : Anders Holbøll


Dato : 23-08-01 11:46

Jesper Stocholm wrote:
>
> Anders Holbøll wrote in dk.edb.internet.webdesign.serverside.asp:
> > Jesper Stocholm wrote:
> > >
> > > Hvis du fx har oprettet en tabel med følgende DDL:
> > > CREATE TABLE MYtable
> > > (Row1 integer TITLE 'My age',
> > > Row2 VHARCHAR(30) TITLE 'My Name',
> > > Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
> > > PRIMARY KEY (Row3)
> > > );
> > > Så kan man ikke hente værdierne med
> > > rs("Row1")
> > > .. men skal i stedet referere til titlen som i
> > > rs("My Email")
> >
> > Hm, det er nok fordi jeg ikke lige kunne komme på en god grund
> > til at bruge title på kolonnerne.
>
> Det giver et pænere billede, når man betragter data i table-view i det
> værktøj man nu sidder og arbejder med. Det er lidt nemmere - semantisk - at
> forstå en kolonne-titel som "Midlertidigt navn" end navnet på kolonnen, som
> fx. kunne være "str_intmed_name"

Så har du en dårlig navngivningskonvention.

> > Hvilken database-server sidder du med?
>
> Det er TeraData jeg sidder og arbejder med ... men jeg mener ligeså
> godt, at problemet kan opstå i MySQL og MSSQL.

Tror du det eller har du prøvet?

> > Anyway. Det må da afhænge af hvordan du skriver din sql? Hvis du
> > skriver "SELECT * FROM MYtable" kommer det måske forkert, men
> > kommer det ikke "rigtigt" ud hvis du skriver "SELECT Row1, Row2,
> > Row3 FROM MYtable"?
>
> Det gør det ikke. Jeg specificerer alle kolonner med navn i min
> SQL-statement, så det er ikke dér problemet er.

Hvad med
"SELECT Row1 AS Row1 FROM MYtable"

> Hvor det så er er derimod et godt spørgsmål.

Det er vel en bug eller en feature i odbc driveren. Har du checket op på
om det er en known bug?
Men du har vel givet kolonnerne de her titler fordi du godt kan lide
titlerne, så der er vel ikke noget problem? (normalt er det jo også
kolonne overskifterne du bruger i rs(...), eksempel "SELECT count(*) AS
antal" får du med rs("antal"), så det er vel ikke så underligt?)

--
Anders

Jesper Stocholm (23-08-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 23-08-01 14:06

Anders Holbøll wrote in dk.edb.internet.webdesign.serverside.asp:
> Jesper Stocholm wrote:
> >
> > Anders Holbøll wrote in dk.edb.internet.webdesign.serverside.asp:
> > >
> > > Hm, det er nok fordi jeg ikke lige kunne komme på en god grund
> > > til at bruge title på kolonnerne.
> >
> > Det giver et pænere billede, når man betragter data i table-view i det
> > værktøj man nu sidder og arbejder med. Det er lidt nemmere - semantisk - at
> > forstå en kolonne-titel som "Midlertidigt navn" end navnet på kolonnen, som
> > fx. kunne være "str_intmed_name"
>
> Så har du en dårlig navngivningskonvention.
>

måske [1] men derfor synes jeg alligevel, at det er lidt underligt. At anvende
TITLE er altså ikke helt dumt. Et konkret eksempel er dette:

Feltet med titlen "Called Area Code Geo Id" har kolonne-navnet
called_area_code_geo_id

... personligt vil jeg hellere kigge på det første i min GUI ... men det kan
være, at det blot er mig :)

> > > Hvilken database-server sidder du med?
> >
> > Det er TeraData jeg sidder og arbejder med ... men jeg mener ligeså
> > godt, at problemet kan opstå i MySQL og MSSQL.
>
> Tror du det eller har du prøvet?
>

som jeg skrev ... jeg "mener" det ... jeg kan forestille mig, at RDMBS-servere,
der understøtter TITLE i DDL vil opføre sig på samme måde ... men jeg ved det
ikke.

>
> > Hvor det så er er derimod et godt spørgsmål.
>
> Det er vel en bug eller en feature i odbc driveren. Har du checket op på
> om det er en known bug?

nej ... det har jeg ikke - jeg troede faktisk, at det var en standard-opførsel
fra ODBC-driveren.

> Men du har vel givet kolonnerne de her titler fordi du godt kan lide
> titlerne, så der er vel ikke noget problem? (normalt er det jo også
> kolonne overskifterne du bruger i rs(...), eksempel "SELECT count(*) AS
> antal" får du med rs("antal"), så det er vel ikke så underligt?)
>

Enig ... enig ... en løsning kunne fx være at lave en "AS some_name" for hver
attribut jeg henter ud ... men det vil gøre min SQL-forespørgsler endnu mere
uoverskuelige end de er pt, så det er ikke rigtigt løsningen.

Jeg må hellere dykke ned i noget doc. :(

Tak for hjælpen ...

[1] Jeg er ikke designeren på den specifikke database-model, så jeg har ikke
rigtigt indflydelse på, hvordan den fysisk implementeres.

Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Anders Holbøll (23-08-2001)
Kommentar
Fra : Anders Holbøll


Dato : 23-08-01 14:51

Jesper Stocholm wrote:
>
> Anders Holbøll wrote in dk.edb.internet.webdesign.serverside.asp:
> > > Det er TeraData jeg sidder og arbejder med ... men jeg mener
> > > ligeså godt, at problemet kan opstå i MySQL og MSSQL.
> >
> > Tror du det eller har du prøvet?
> >
>
> som jeg skrev ... jeg "mener" det ... jeg kan forestille mig, at
> RDMBS-servere, der understøtter TITLE i DDL vil opføre sig på
> samme måde ... men jeg ved det ikke.

Det var ikke for at mistænkliggøre dig. Jeg var bare nysgerrig, da jeg
ikke lige kunne finde muglieheden i bol (omend jeg mener oracle har et
comment-feature).

> en løsning kunne fx være at lave en "AS some_name" for hver attribut
> jeg henter ud ... men det vil gøre min SQL-forespørgsler endnu mere
> uoverskuelige end de er pt, så det er ikke rigtigt løsningen.

Hvis du skal ud i noget gris, hvad så med at lave et view, som sætter
aliaser på alle kolonner. (<= grim hack-løsning)

Man kunne måske tænke sig at der var en property på odbc/ado driveren,
som slog title fra eller en sql-setting man kunne sende til databasen.

--
Anders

Peter Lykkegaard (23-08-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 23-08-01 15:04


"Anders Holbøll" <dev-null-20010820@serveren.dk> wrote in message
news:3B850A5C.7B09F832@serveren.dk...

> Man kunne måske tænke sig at der var en property på odbc/ado driveren,
> som slog title fra eller en sql-setting man kunne sende til databasen.
>
Eller som jeg foreslog - brug den ordinale værdi
Der er faktisk bedre end at bruge Name property til at fremfinde den rigtige
attribut (felt)

mvh/Peter Lykkegaard



Anders Holbøll (23-08-2001)
Kommentar
Fra : Anders Holbøll


Dato : 23-08-01 15:18

Peter Lykkegaard wrote:
>
> "Anders Holbøll" <dev-null-20010820@serveren.dk> wrote in message
> news:3B850A5C.7B09F832@serveren.dk...
>
> > Man kunne måske tænke sig at der var en property på odbc/ado
> > driveren, som slog title fra eller en sql-setting man kunne
> > sende til databasen.
> >
> Eller som jeg foreslog - brug den ordinale værdi
> Der er faktisk bedre end at bruge Name property til at fremfinde
> den rigtige attribut (felt)

Det kommer an på hvad man vil (hastighed eller letlæselighed) og jeg
læste spøgsmålet som hvordan man kunne komme til at referer til et felt
via kolonne navnet (imodsætning til titlen).

--
Anders

Peter Lykkegaard (23-08-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 23-08-01 16:07


"Anders Holbøll" <dev-null-20010820@serveren.dk> wrote in message
news:3B851088.E25159A0@serveren.dk...
> Peter Lykkegaard wrote:
> >
> > "Anders Holbøll" <dev-null-20010820@serveren.dk> wrote in message
> > news:3B850A5C.7B09F832@serveren.dk...
> >
> > > Man kunne måske tænke sig at der var en property på odbc/ado
> > > driveren, som slog title fra eller en sql-setting man kunne
> > > sende til databasen.
> > >
> > Eller som jeg foreslog - brug den ordinale værdi
> > Der er faktisk bedre end at bruge Name property til at fremfinde
> > den rigtige attribut (felt)
>
> Det kommer an på hvad man vil (hastighed eller letlæselighed) og jeg
> læste spøgsmålet som hvordan man kunne komme til at referer til et felt
> via kolonne navnet (imodsætning til titlen).
>
Njahh hvordan man undgår at referere til titel, men never mind

For at komme ud over problemet med læsbarheden, kan man bruge navngivne
konstanter for den ordinale værdi, som jeg beskrev i mit indlæg

mvh/Peter Lykkegaard



Anders Holbøll (23-08-2001)
Kommentar
Fra : Anders Holbøll


Dato : 23-08-01 16:12

Peter Lykkegaard wrote:
>
> For at komme ud over problemet med læsbarheden, kan man bruge
> navngivne konstanter for den ordinale værdi, som jeg beskrev
> i mit indlæg

Så tror jeg bedre, at jeg kan lide den her version (måske fordi jeg tror
den er lidt hurtigere):

Rs.Open Sql, Conn, 0, 1, 1
Set MitFeltNavn = Rs(0)
Set MitAndetFeltNavn = Rs(0)
Do Until Rs.Eof
Response.Write "Tests: " & MitFeltNavn & "<br>"
Response.Write "Dæo: " & MitAndetFeltNavn & "<br>"
Rs.MoveNext
Loop
Rs.Close

Men, som du også var inde på, never mind.

--
Anders

Peter Lykkegaard (23-08-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 23-08-01 12:51


"Jesper Stocholm" <spam@stocholm.dk> wrote in message
news:9m2me4$agj$1@sunsite.dk...
> Anders Holbøll wrote in dk.edb.internet.webdesign.serverside.asp:
> > Jesper Stocholm wrote:
> > >
> > > Hvis du fx har oprettet en tabel med følgende DDL:
> > > CREATE TABLE MYtable
> > > (Row1 integer TITLE 'My age',
> > > Row2 VHARCHAR(30) TITLE 'My Name',
> > > Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
> > PRIMARY KEY (Row3)
> > );
> > Så kan man ikke hente værdierne med
> > rs("Row1")
> > .. men skal i stedet referere til titlen som i
> > rs("My Email")

> > Hvilken database-server sidder du med?
>
> Det er TeraData jeg sidder og arbejder med ... men jeg mener ligeså godt,
> at problemet kan opstå i MySQL og MSSQL.
>

Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
_____________________________^^^^^^^^

Den kan jeg ikke lige finde i BOL

mvh/Peter Lykkegaard


> > Anyway. Det må da afhænge af hvordan du skriver din sql? Hvis du skriver
> > "SELECT * FROM MYtable" kommer det måske forkert, men kommer det ikke
> > "rigtigt" ud hvis du skriver "SELECT Row1, Row2, Row3 FROM MYtable"?
> >
>
> Det gør det ikke. Jeg specificerer alle kolonner med navn i min
> SQL-statement, så det er ikke dér problemet er. Hvor det så er er derimod
> et godt spørgsmål.
>
> :)
>
> Jesper Stocholm
> http://stocholm.dk
>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! => http://www.html.dk/tutorials



Jesper Stocholm (23-08-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 23-08-01 14:44

Peter Lykkegaard wrote in dk.edb.internet.webdesign.serverside.asp:
> "Jesper Stocholm" <spam@stocholm.dk> wrote in message
> news:9m2me4$agj$1@sunsite.dk...
>
> Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
> _____________________________^^^^^^^^
>
> Den kan jeg ikke lige finde i BOL
>

nope ... men det er heller ikke MS SQL ... der er TeraData :)

Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Peter Lykkegaard (23-08-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 23-08-01 15:02


"Jesper Stocholm" <spam@stocholm.dk> wrote in message
news:9m31bl$aen$1@sunsite.dk...
> Peter Lykkegaard wrote in dk.edb.internet.webdesign.serverside.asp:
> > "Jesper Stocholm" <spam@stocholm.dk> wrote in message
> > news:9m2me4$agj$1@sunsite.dk...
> >
> > Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
> > _____________________________^^^^^^^^
> >
> > Den kan jeg ikke lige finde i BOL
> >
> nope ... men det er heller ikke MS SQL ... der er TeraData :)
>
Nææh - måske flueknepperi - men du skrev

> Det er TeraData jeg sidder og arbejder med ... men jeg mener ligeså godt,
> at problemet kan opstå i MySQL og MSSQL.

Så jeg mente bare med min kommentar at problemet ikke opstår mht MSSQL da
TITLE ikke er understøttet på denne platform

mvh/Peter Lykkegaard




Jesper Stocholm (31-08-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 31-08-01 07:29

Peter Lykkegaard wrote in news:gX7h7.133$Nz1.3203@news.get2net.dk:

>
> "Jesper Stocholm" <spam@stocholm.dk> wrote in message
> news:9m31bl$aen$1@sunsite.dk...
>> Peter Lykkegaard wrote in dk.edb.internet.webdesign.serverside.asp:
>> > "Jesper Stocholm" <spam@stocholm.dk> wrote in message
>> > news:9m2me4$agj$1@sunsite.dk...
>> >
>> > Row3 VARCHAR(50) NOT NULL TITLE 'My Email',
>> > _____________________________^^^^^^^^
>> >
>> > Den kan jeg ikke lige finde i BOL
>> >
>> nope ... men det er heller ikke MS SQL ... der er TeraData :)
>>
> Nææh - måske flueknepperi - men du skrev
>
>> Det er TeraData jeg sidder og arbejder med ... men jeg mener ligeså
>> godt, at problemet kan opstå i MySQL og MSSQL.
>

jaja ... godt ord igen ...

> Så jeg mente bare med min kommentar at problemet ikke opstår mht MSSQL
> da TITLE ikke er understøttet på denne platform
>

problemet er endnu ikke løst - men årsagen er fundet. Det viser sig, at
TeraData leverer kolonne-titler som resultatet i et recordset/tabel - og
ikke kolonne-navnet - som andre RDBMS'er. Nu mangler jeg blot at finde hvor
i TeraData jeg kan sætte et flag, så den leverer navnene i stedet for.



--
Jesper Stocholm
http://stocholm.dk
ICQ: 13214885
MSN Messenger: jesperstocholm at hotmail dot com

Peter Lykkegaard (23-08-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 23-08-01 12:54


"Jesper Stocholm" <spam@stocholm.dk> wrote in message
news:9m2f3v$lpa$1@sunsite.dk...
> Jeg har lagt mærke til, at ADO refererer til kolonnernes titler i
> en tabel i stedet for deres navne. Er det en måde at undgå dette
> på ?
>
Brug den ordinale værdi

Const PR_INT_ANTAL = 0

strSQL = "SELECT Count(*) AS Antal FROM MyTable"

Set rsMyTable = .................

Response.Write rsMyTable(PR_INT_ANTAL).Name & ": " & _
rsMyTable(PR_INT_ANTAL).Value

Kræver dog at man er lidt konsekvent mht rækkefølgen af felterne i en select
statement
Klares snildt hvis man fx bruger stored procedures

mvh/Peter Lykkegaard



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

Månedens bedste
Årets bedste
Sidste års bedste