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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
udtræk uden udtræk
Fra : Chrisser


Dato : 09-12-02 14:47

Hej
Bag denne noget kryptiske overskrift gemmer sig det problem at jeg nogle
gange ( i ASP ) har behov for at kunne åbne et recordset der er tomt. Dette
for at kunne tilgå for eksempel felttyperne.
Databasen er MSSQL.

Det ville ikke være et problem hvis jeg på forhånd vidste hvilken tabel det
drejede sig om, fordi jeg så kunne lave noget a' la: "select * from adresse
where isnull(id,0) = 0". Det ville give et tomt recordset, eller noget nær
det ihvertfald.
Men i dette tilfælde er valget af tabel dynamisk, derfor kender jeg ikke et
af mine felter.

Er der nogen "smart" måde at få åbnet et tomt recordset på ?


Chrisser



 
 
Nis Jorgensen (09-12-2002)
Kommentar
Fra : Nis Jorgensen


Dato : 09-12-02 15:26

On Mon, 9 Dec 2002 14:46:38 +0100, "Chrisser" <cbj@egdatainform.dk>
wrote:

>Det ville ikke være et problem hvis jeg på forhånd vidste hvilken tabel det
>drejede sig om, fordi jeg så kunne lave noget a' la: "select * from adresse
>where isnull(id,0) = 0". Det ville give et tomt recordset, eller noget nær
>det ihvertfald.
>Men i dette tilfælde er valget af tabel dynamisk, derfor kender jeg ikke et
>af mine felter.
>
>Er der nogen "smart" måde at få åbnet et tomt recordset på ?

"SELECT * FROM adresse WHERE FALSE"?

--
Nis Jørgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

Chrisser (09-12-2002)
Kommentar
Fra : Chrisser


Dato : 09-12-02 15:23

"Nis Jorgensen" <nis@dkik.dk> skrev i en meddelelse
news:8t99vug0at5b88t6lhh8qihn27ilbe7jtf@4ax.com...
> >
> >Er der nogen "smart" måde at få åbnet et tomt recordset på ?
>
> "SELECT * FROM adresse WHERE FALSE"?
>

Desværre, den giver: "incorrect syntaks near false"


Chrisser





Peter Lykkegaard (09-12-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 09-12-02 15:46

Som svar på skriblerier forfattet af Chrisser

> "Nis Jorgensen" <nis@dkik.dk> skrev i en meddelelse
> news:8t99vug0at5b88t6lhh8qihn27ilbe7jtf@4ax.com...
>>>
>>> Er der nogen "smart" måde at få åbnet et tomt recordset på ?
>>
>> "SELECT * FROM adresse WHERE FALSE"?
>>
> Desværre, den giver: "incorrect syntaks near false"
>
SELECT * FROM <table> WHERE 1=2

mvh/Peter Lykkegaard




Chrisser (09-12-2002)
Kommentar
Fra : Chrisser


Dato : 09-12-02 15:52

"Peter Lykkegaard" <polonline@hotmail.com> skrev i en meddelelse
news:at2a3o$hhb$1@sunsite.dk...
> Som svar på skriblerier forfattet af Chrisser
>
> >
> SELECT * FROM <table> WHERE 1=2
>
Hmmmm
Ja selvfølgelig, en burde jeg sådan set selv have tænkt på...

Måske lader den lidt fusket, men den virker efter hensigten
- den er i hvert fald god til mit formål.





Kristian Damm Jensen (10-12-2002)
Kommentar
Fra : Kristian Damm Jensen


Dato : 10-12-02 15:20

Chrisser wrote:
>
> "Peter Lykkegaard" <polonline@hotmail.com> skrev i en meddelelse
> news:at2a3o$hhb$1@sunsite.dk...
> > Som svar på skriblerier forfattet af Chrisser
> >
> > >
> > SELECT * FROM <table> WHERE 1=2
> >
> Hmmmm
> Ja selvfølgelig, en burde jeg sådan set selv have tænkt på...
>
> Måske lader den lidt fusket, men den virker efter hensigten
> - den er i hvert fald god til mit formål.
>


Selvfølgelig ser det fusket ud. Det, du vil gøre, er fusket.

Hvorfor ikke lave en søgning direkte i syscolumns?

--
Kristian Damm Jensen | Feed the hungry at www.thehungersite.com
kristian-damm.jensen@cgey.com | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.


Chrisser (10-12-2002)
Kommentar
Fra : Chrisser


Dato : 10-12-02 15:49

"Kristian Damm Jensen" <kristian-damm.jensenRE@MOVEcgey.com> skrev i en
meddelelse news:3DF5F819.B6ADADA6@MOVEcgey.com...

> Selvfølgelig ser det fusket ud. Det, du vil gøre, er fusket.

Jeg skrev: "Måske lader den lidt fusket, men den virker efter hensigten" (
nøjagtig som den jeg havde i mit første indlæg, men som kun kunne bruges på
én bestemt tabel).

Så hvis du mener at det virkelig er fusket, må du da gerne redegøre lidt
nærmere for det.
Er der problemer i en sådan forespørgsel som jeg ikke kender til, eller er
der bare noget med at man bruger tingene på en måde de ikke var tænkt til ?
( nogle ville kalde det for kreativitet )

> Hvorfor ikke lave en søgning direkte i syscolumns?

Ja det ved jeg da egentlig heller ikke.
- men du må gerne fortælle mig lidt om det. Det var jo det jeg spurgte om.

Det jeg har brug for, er feltnavn + felttype, og i samme rækkefølge som en
select * vil give. Det skal faktisk også være i "samme form" som et
recordset, altså kunne gennemløbes på samme måde.


Chrisser



Kristian Damm Jensen (10-12-2002)
Kommentar
Fra : Kristian Damm Jensen


Dato : 10-12-02 22:16

Chrisser wrote:
>
> "Kristian Damm Jensen" <kristian-damm.jensenRE@MOVEcgey.com> skrev i en
> meddelelse news:3DF5F819.B6ADADA6@MOVEcgey.com...
>
> > Selvfølgelig ser det fusket ud. Det, du vil gøre, er fusket.
>
> Jeg skrev: "Måske lader den lidt fusket, men den virker efter hensigten" (
> nøjagtig som den jeg havde i mit første indlæg, men som kun kunne bruges på
> én bestemt tabel).
>
> Så hvis du mener at det virkelig er fusket, må du da gerne redegøre lidt
> nærmere for det.
> Er der problemer i en sådan forespørgsel som jeg ikke kender til, eller er
> der bare noget med at man bruger tingene på en måde de ikke var tænkt til ?

Ja, det er det jeg sigter til. At lave en besynderlig konstruktion, til
at opnå noget som kan klares på fuldstændig standard-manér.

> ( nogle ville kalde det for kreativitet )

Eller at gå over åen efter vand.

> > Hvorfor ikke lave en søgning direkte i syscolumns?
>
> Ja det ved jeg da egentlig heller ikke.
> - men du må gerne fortælle mig lidt om det. Det var jo det jeg spurgte om.
>
> Det jeg har brug for, er feltnavn + felttype, og i samme rækkefølge som en
> select * vil give. Det skal faktisk også være i "samme form" som et
> recordset, altså kunne gennemløbes på samme måde.

Hvis du virkelig insisterer på, at de skal komme i samme rækkefølge, som
"select *" vil levere det, så er der næppe nogen vej uden om. Men så er
du også ude på et skråplan fordi du dermed binder dig til et tilfældigt
fysisk layout af databasen. Det er aldrig klogt. Felttype kan du da vist
i øvrigt ikke aflæse af det tomme recordsæt du får retur ved den angivne
løsning, oder?

Men hvis du kan nøjes med en mere "regelret" metode (som til gengæld
ikke garanterer sammenhæng med det fysiske layout) så vil jeg foreslå at
du sætter dig lidt ind MSSQLs systemtabeller. Det er en del år siden jeg
har rodet med det selv, så jeg kan ikke levere detaljer, men så vidt jeg
husker indeholder sysobjects oplysninger om objekter i databasen
(tabeller, procedurer, triggers m.v.), og syscolumns indeholder feltnavn
og type for kolonner til tabeller og parametre til procedurer.

Du bliver selv nødt til at læse dig til detaljerne i manualerne. I den
version, jeg havde adgang til, fulgte et glimrende A1-opslag med, med en
fuld oversigt over alle systemtabeller.

>
>
> Chrisser


--
Kristian Damm Jensen | Feed the hungry at www.thehungersite.com
kristian-damm.jensen@cgey.com | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.


Chrisser (11-12-2002)
Kommentar
Fra : Chrisser


Dato : 11-12-02 15:49

"Kristian Damm Jensen" <kristian-damm.jensenRE@MOVEcgey.com> skrev i en
meddelelse news:3DF65982.7201278F@MOVEcgey.com...
> > ( nogle ville kalde det for kreativitet )

> Eller at gå over åen efter vand.

At gå over åen efter vand, det er at gøre det svært for sig selv. Jeg mener
ikke "where 1=2" er at gøre det svært for sig selv.


> > > Hvorfor ikke lave en søgning direkte i syscolumns?
> >
> > Ja det ved jeg da egentlig heller ikke.
> > - men du må gerne fortælle mig lidt om det. Det var jo det jeg spurgte
om.
> >
> > Det jeg har brug for, er feltnavn + felttype, og i samme rækkefølge som
en
> > select * vil give. Det skal faktisk også være i "samme form" som et
> > recordset, altså kunne gennemløbes på samme måde.
>
> Hvis du virkelig insisterer på, at de skal komme i samme rækkefølge, som
> "select *" vil levere det, så er der næppe nogen vej uden om. Men så er
> du også ude på et skråplan fordi du dermed binder dig til et tilfældigt
> fysisk layout af databasen. Det er aldrig klogt.

Jo det var også en hurtig udmelding, jeg har ikke brug for rækkefølgen ( så
den allerede i går da jeg havde sendt den ).

Jeg har dog brug for navn + type parvis og da alle felter skal gennemløbes
til sammenligning med en anden tabel er det smart at have dem i ét recordset
frem for at søge for hvert gennemløb.

>Felttype kan du da vist
> i øvrigt ikke aflæse af det tomme recordsæt du får retur ved den angivne
> løsning, oder?

Jo da, jeg gør det allerede de steder hvor jeg kender min tabel, jeg ville
blot lave den mere generel, da jeg ikke alle steder kender tabellen - og
derfor ikke lige kunne hitte ud af et tomt recordset.
- eller rettere, nu gør jeg det jo så alle steder med "where 1=2"

> Men hvis du kan nøjes med en mere "regelret" metode (som til gengæld
> ikke garanterer sammenhæng med det fysiske layout) så vil jeg foreslå at
> du sætter dig lidt ind MSSQLs systemtabeller. Det er en del år siden jeg
> har rodet med det selv, så jeg kan ikke levere detaljer, men så vidt jeg
> husker indeholder sysobjects oplysninger om objekter i databasen
> (tabeller, procedurer, triggers m.v.), og syscolumns indeholder feltnavn
> og type for kolonner til tabeller og parametre til procedurer.
>
> Du bliver selv nødt til at læse dig til detaljerne i manualerne. I den
> version, jeg havde adgang til, fulgte et glimrende A1-opslag med, med en
> fuld oversigt over alle systemtabeller.
>

Jeg har aldrig brugt sysobjects til andet end at tjekke for eksistens af
henholdsvis tabeller og felter inden oprettelse af nye, og jeg får ikke tid
til at sætte mig ind i resten foreløbig, så jeg nøjes med den kreative
løsning...


Chrisser



Peter Lykkegaard (12-12-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 12-12-02 15:59

Som svar på skriblerier forfattet af Chrisser

> "Kristian Damm Jensen" <kristian-damm.jensenRE@MOVEcgey.com> skrev i
> en meddelelse news:3DF65982.7201278F@MOVEcgey.com...

>> Men hvis du kan nøjes med en mere "regelret" metode (som til gengæld
>> ikke garanterer sammenhæng med det fysiske layout) så vil jeg
>> foreslå at du sætter dig lidt ind MSSQLs systemtabeller.

> Jeg har aldrig brugt sysobjects til andet end at tjekke for eksistens
> af henholdsvis tabeller og felter inden oprettelse af nye, og jeg får
> ikke tid til at sætte mig ind i resten foreløbig, så jeg nøjes med
> den kreative løsning...

Du kan evt bruge den her select på din foretrukne database

Select * From Information_Schema.Columns
Order By Table_Schema, Table_Name, Ordinal_Position

Det burde give at fingerpeg om hver enkelt det egentlig er

mvh/Peter Lykkegaard



Chrisser (13-12-2002)
Kommentar
Fra : Chrisser


Dato : 13-12-02 08:34

"Peter Lykkegaard" <polonline@hotmail.com> skrev i en meddelelse
news:ata82q$98u$1@sunsite.dk...
> > Jeg har aldrig brugt sysobjects til andet end at tjekke for eksistens
> > af henholdsvis tabeller og felter inden oprettelse af nye, og jeg får
> > ikke tid til at sætte mig ind i resten foreløbig, så jeg nøjes med
> > den kreative løsning...
>
> Du kan evt bruge den her select på din foretrukne database
>
> Select * From Information_Schema.Columns
> Order By Table_Schema, Table_Name, Ordinal_Position
>
> Det burde give at fingerpeg om hver enkelt det egentlig er

Det vil jeg da lige afprøve
- takker


Chrisser



Nis Jorgensen (09-12-2002)
Kommentar
Fra : Nis Jorgensen


Dato : 09-12-02 16:00

On Mon, 9 Dec 2002 15:22:44 +0100, "Chrisser" <cbj@egdatainform.dk>
wrote:

>"Nis Jorgensen" <nis@dkik.dk> skrev i en meddelelse
>news:8t99vug0at5b88t6lhh8qihn27ilbe7jtf@4ax.com...
>> >
>> >Er der nogen "smart" måde at få åbnet et tomt recordset på ?
>>
>> "SELECT * FROM adresse WHERE FALSE"?
>>
>
>Desværre, den giver: "incorrect syntaks near false"

Hmmm -det er da vist et MSSQL-problem. Hvordan med
"SELECT * FROM adresse WHERE 0=1"?

--
Nis Jørgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

Chrisser (09-12-2002)
Kommentar
Fra : Chrisser


Dato : 09-12-02 15:55

"Nis Jorgensen" <nis@dkik.dk> skrev i en meddelelse
news:ssb9vucjdfs5fvv6btoftvb31f36h7nkmm@4ax.com...
> On Mon, 9 Dec 2002 15:22:44 +0100, "Chrisser" <cbj@egdatainform.dk>
> wrote:
>
> >> "SELECT * FROM adresse WHERE FALSE"?
> >>
> >
> >Desværre, den giver: "incorrect syntaks near false"
>
> Hmmm -det er da vist et MSSQL-problem. Hvordan med
> "SELECT * FROM adresse WHERE 0=1"?

Den er til gengæld fin !


Chrisser



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


Dato : 09-12-02 16:15

Nis Jorgensen skrev:

>>> "SELECT * FROM adresse WHERE FALSE"?

>> Desværre, den giver: "incorrect syntaks near false"

> Hmmm -det er da vist et MSSQL-problem.

Ja. MSSQL forstår ikke true/false. Bit-datatypen som er MSSQL-
ækvivalenten til Access' Boolean, bruger 1 og 0 som værdier.

"...WHERE 1=0" eller lignende (som det allerede er foreslået) er
måden at gøre det på i MSSQL.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Peter Lykkegaard (09-12-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 09-12-02 15:46

Som svar på skriblerier forfattet af Chrisser

> Bag denne noget kryptiske overskrift gemmer sig det problem at jeg
> nogle gange ( i ASP ) har behov for at kunne åbne et recordset der er
> tomt. Dette for at kunne tilgå for eksempel felttyperne.

Du kunne overveje ADOX?

> Databasen er MSSQL.

Eller bruge schemas direkte fra MSSQL?

mvh/Peter Lykkegaard




Chrisser (09-12-2002)
Kommentar
Fra : Chrisser


Dato : 09-12-02 15:53

"Peter Lykkegaard" <polonline@hotmail.com> skrev i en meddelelse
news:at2a5c$hvg$1@sunsite.dk...
> Som svar på skriblerier forfattet af Chrisser
>
> > Bag denne noget kryptiske overskrift gemmer sig det problem at jeg
> > nogle gange ( i ASP ) har behov for at kunne åbne et recordset der er
> > tomt. Dette for at kunne tilgå for eksempel felttyperne.
>
> Du kunne overveje ADOX?

Kender det ikke, men det er sikkert noget med at skyde gråspurve med kanoner
i mit tilfælde


> > Databasen er MSSQL.
>
> Eller bruge schemas direkte fra MSSQL?

ds som ovenfor

- jeg tror jeg holder mig til ".... where 1=2"


Chrisser





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

Månedens bedste
Årets bedste
Sidste års bedste