/ 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
Ja/Nej
Fra : Jørgen Müller


Dato : 19-12-02 12:59

Hej Gruppe

I access2000 har jeg nogle ja/nej felter, men nu er databasen konverteret
til MSSQL
så hvad er disse felter blevet til? og hvordan aflæser jeg værdien?

Har ikke adgang til MSSQL da den kun ligger hos udbyderen.

--
Med Venlig Hilsen

Jørgen Müller



 
 
Jakob Andersen (19-12-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-12-02 17:58

"Jørgen Müller" <j.muller@mail.tele.dk> wrote
> I access2000 har jeg nogle ja/nej felter, men nu er databasen konverteret
> til MSSQL
> så hvad er disse felter blevet til? og hvordan aflæser jeg værdien?

Jeg ved ikke lige hvad Ja/Nej felter bliver til i en konvertering men man
plejer i MSSQL at bruge en Bit datatype som enten er 0, 1 eller NULL

Alternativt kan du spørge dig frem i systemtabellerne for at få datatypen

SELECT TOP 1 name FROM systypes WHERE
xtype = (
SELECT xtype FROM syscolumns WHERE name='<KOLONNENAVN>' AND id =
(SELECT id FROM sysobjects WHERE name = '<TABELNAVN>')
)

--
Jakob Andersen



Jens Gyldenkærne Cla~ (19-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-12-02 22:46

Jakob Andersen skrev:

> Jeg ved ikke lige hvad Ja/Nej felter bliver til i en
> konvertering men man plejer i MSSQL at bruge en Bit datatype
> som enten er 0, 1 eller NULL

Det er netop Bit-typen som en automatisk konvertering vil ændre et
ja/nej-felt til.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørgen Müller (20-12-2002)
Kommentar
Fra : Jørgen Müller


Dato : 20-12-02 12:27

Hej Gruppe

Tak for hjælpen.
Jeg har udskrevet eksemplet som Jakob beskrev
>SELECT TOP 1 name FROM systypes WHERE
> xtype = (
> SELECT xtype FROM syscolumns WHERE name='<KOLONNENAVN>' AND id =
> (SELECT id FROM sysobjects WHERE name = '<TABELNAVN>')
> )
og den siger at datatypen er bit, så langt så godt, men det gav mig en ide
om man ikke kan
udskrive værdierne/felttypen for samtlige felter i tabellen via syscolmns?
lidt i stil med det man gør med et
recordset
For Each Field In rs.Fields
Response.Write Field.Name & "<BR>"
Next
--
Med Venlig Hilsen

Jørgen Müller



Jakob Andersen (20-12-2002)
Kommentar
Fra : Jakob Andersen


Dato : 20-12-02 20:47

"Jørgen Müller" <j.muller@mail.tele.dk> wrote
> og den siger at datatypen er bit, så langt så godt, men det
> gav mig en ide om man ikke kan udskrive værdierne/felttypen
> for samtlige felter i tabellen via syscolmns?

Noget ala nedenstående:

SELECT st.name, sc.name FROM syscolumns sc INNER JOIN systypes st ON
st.xtype = sc.xtype WHERE sc.id = (SELECT id FROM sysobjects WHERE name =
'<tabelnavn>'

--
Jakob Andersen



Jørgen Müller (21-12-2002)
Kommentar
Fra : Jørgen Müller


Dato : 21-12-02 09:36

Jakob Andersen skrev:
>Noget ala nedenstående:

>SELECT st.name, sc.name FROM syscolumns sc INNER JOIN systypes st ON
>st.xtype = sc.xtype WHERE sc.id = (SELECT id FROM sysobjects WHERE name =
>'<tabelnavn>'

og jeg har derfor prøvet med:
strSQL = "SELECT st.name, sc.name FROM syscolumns sc INNER JOIN systypes st
" &_
"ON st.xtype = sc.xtype WHERE sc.id = (SELECT id " &_
"FROM sysobjects WHERE name = 'T_Bud')"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, dbCon
For Each Field In rs.Fields
Response.Write rs("st.name") & " " & rs("sc.name") & "<BR>" 'Linie 9 der
giver fejl
Next
rs.Close
Set rs = Nothing

Men får følgende fejl

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name
or ordinal.

/tabeldesign.asp, line 9


--
Med Venlig Hilsen

Jørgen Müller



Jens Gyldenkærne Cla~ (22-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-12-02 00:04

Jørgen Müller skrev:

> strSQL = "SELECT st.name, sc.name FROM syscolumns sc INNER
> JOIN systypes st " &_
> "ON st.xtype = sc.xtype WHERE sc.id = (SELECT id " &_
> "FROM sysobjects WHERE name = 'T_Bud')"

Dit postsæt indeholder to felter kaldet "name". Selvom du angiver
hvor data skal hentes fra (med st og sc) hedder begge felter stadig
bare "name" i postsættet.

> Response.Write rs("st.name") & " " & rs("sc.name") & "<BR>"

Derfor vil denne linje ikke virke. Du kan bruge indeksnummerering i
stedet:

| Response.Write rs(0) & " " & rs(1) & "<br>"

- men det er bedre at definere aliasser på feltnavnene:

| strSQL = "SELECT st.name AS stName, sc.name AS scName ...

.... hvorefter du kan bruge de nye navne i henvisninger til
postsættet:

| Response.Write rs("stName") & " " & rs("scName") & "<br>"
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørgen Müller (22-12-2002)
Kommentar
Fra : Jørgen Müller


Dato : 22-12-02 08:50

Jens Gyldenkærne Clausen skrev
>| strSQL = "SELECT st.name AS stName, sc.name AS scName ...

>... hvorefter du kan bruge de nye navne i henvisninger til
>postsættet:

og så virker den især da jeg tilføjede en Do While Not rs.EOF

et enkelt tillægsspørgsmål -> Når jeg kører koden bliver alt gentaget flere
gange
nvarchar Fiskepladser
nvarchar Fiskepladser
sysname Fiskepladser
sysname Fiskepladser
nogen ide om hvorfor?
strSQL = "SELECT st.name As stName, sc.name As scName FROM syscolumns sc "
&_
"INNER JOIN systypes st " &_
"ON st.xtype = sc.xtype WHERE sc.id = (SELECT id " &_
"FROM sysobjects WHERE name = 'T_Person')"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, dbCon
Do While not rs.EOF
For Each Field In rs.Fields
Response.Write rs("stName") & " " & rs("scName") & "<BR>"
Next
rs.MoveNext
Loop
rs.Close
Set rs = Nothing

Takker mange gange for hjælpen
--
Med Venlig Hilsen

Jørgen Müller



Jens Gyldenkærne Cla~ (22-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-12-02 11:16

Jørgen Müller skrev:

> et enkelt tillægsspørgsmål -> Når jeg kører koden bliver alt
> gentaget flere gange

Det er formentlig fordi det står flere gange i dit postsæt (der er
næppe dubletter i sysobjects, men der kan jo være forskelle i nogle
af de felter du ikke udskriver).

> strSQL = "SELECT st.name As stName, sc.name As scName FROM

Prøv at sætte DISTINCT ind:

| strSQL = "SELECT DISTINCT st.name As stName, sc.name As ...
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177503
Tips : 31968
Nyheder : 719565
Indlæg : 6408541
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste