Toon posts:

[asp/sql] auto uitlezen length van colomn uit sql database

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb gezocht, maar weet misschien niet hoe ik het precies moet uitleggen.
Ik wil in een soort van cms bij de invoerkant (asp) automatisch bij elk in te vullen veld latern verschijnen wat de max waarde is die ingevuld kan worden. Stel het sql varchar veld naam heeft een length van 50 dan wil ik 50 terugkrijgen zodat ik deze kan laten verschijnen bij het invulveld.
De functie om het te laten verschijnen bij de juiste velden is geen punt maar wat is de query op de db om deze waarde per veld op te halen? Wellicht een stored procudere optie?

gr niek

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je kunt de INFORMATION_SCHEMA views hiervoor gebruiken. In jouw geval:

SQL:
1
2
SELECT Table_Name, Column_Name, Data_type, Character_maximum_length 
FROM INFORMATION_SCHEMA.COLUMNS 


edit: dit geldt voor MS SQL Server

[ Voor 9% gewijzigd door P_de_B op 18-11-2005 11:47 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
Tja, dat verschilt van DBMS tot DBMS, en aangezien je niet vermeld welk DBMS je gebruikt, kunnen we je ook niet echt helpen.
Als je met sql server werkt, kan je eens kijken naar sysobjects, sp_help, etc...

https://fgheysels.github.io/


Verwijderd

Topicstarter
Sorry, het is inderdaad sql server 2000. Zal eens kijken naar sysobjects

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Verwijderd schreef op vrijdag 18 november 2005 @ 11:47:
Sorry, het is inderdaad sql server 2000. Zal eens kijken naar sysobjects
Je moet niet rechtstreeks de systabellen gaan benaderen, daar zijn nu juist de information_schema views voor.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:16
P_de_B schreef op vrijdag 18 november 2005 @ 11:48:
[...]


Je moet niet rechtstreeks de systabellen gaan benaderen, daar zijn nu juist de information_schema views voor.
Ehm, helemaal waar. :+

https://fgheysels.github.io/


Verwijderd

Topicstarter
de functie werkt helaas nog net: kan het wel op deze manier?
code:
1
2
3
4
5
6
7
Function Veldlengte(tabel,veld)
Dim sqlstmtveld, Vlengte, rsveld
sqlstmtveld= "SELECT COALESCE (CHARACTER_MAXIMUM_LENGTH) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '"&tabel&"' AND COLUMN_NAME = '"&veld&"' " 
Set rsveld = connectie.Execute(sqlstmtveld)
Vlengte = rsveld("Vlengte")
Veldlengte = Vlengte
End Function


en zo roep ik het op vanuit asp pagina: <%=Veldlengte("programma","programmaNaam")%>

[ Voor 20% gewijzigd door Verwijderd op 18-11-2005 12:14 . Reden: aangevuld met meer info ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je gebruikt de COALESCE functie verkeerd. COALESCE retourneert de eerste niet null waarde die in zi'n parameterlijst voorkomt. Je moet dus wel meerdere parameters opgeven. In dit geval kun je het ook doen met ISNULL.

SELECT ISNULL(CHARACTER_MAXIMUM_LENGTH,0) as Lengte FROM ...

waarbij de '0' in de ISNULL functie terug gegeven wordt als de waarde in de database NULL is.

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Topicstarter
Cool, dat was het inderdaad.
Pagina: 1