webForumDet fria alternativet

Fråga efter primärnyckel.

ASP

11 svar · 242 visningar · startad av Koplik

Medlem sedan juli 20011 129 inlägg
Frågan#1

Jag är nöd efter att få reda på hur jag kan identifiera kolumnen som innehåller primärnyckeln i en databas.
Det skulle hjälpa mig mycket...
Ifall någon har en aning om det eller inte riktigt förstår... :l
Skriv det!

Tack på förhand! :)

------------------
Den röda webkodarmasken är lös... Ahhrghhh

Medlem sedan dec. 200012 464 inlägg
#2

Man kan använda sig av metoden openschema.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthopenschema.asp

Alternativt, om man har en dbms som är standardiserad, så kan man använda de vyer som finns i information_schema. För att få fram primärnyckelskolumnerna i en tabell så får man joina mellan key_column_usage och table_constraints

------------------
essentitia preter non sans multiplicandum

Medlem sedan juli 20011 129 inlägg
#3

Jag försöte med typen att öppna schema.
Körde.
Set RecSet = connect.OpenSchema(4)
för det är något med Primary Key.
Men den vägrar totalt att utföra det.
Kanske gjort något speciellt fel?
Felmeddelandet lyder:
"Object or provider is not capable of performing requested operation."

Any ideas? :q

------------------
Den röda webkodarmasken är lös... Ahhrghhh

Medlem sedan dec. 200012 464 inlägg
#4

Vilken databas har du?

------------------
essentitia preter non sans multiplicandum

Medlem sedan juli 20011 129 inlägg
#5

Jag kör med Access...
2000......
Ingen hit då?

------------------
Den röda webkodarmasken är lös... Ahhrghhh

Medlem sedan mars 20002 836 inlägg
#6

Har du provat med:
Set RecSet = connect.OpenSchema(28)

En bra sak att oxå ha till hands är ADO SDK som finns att ladda ned från www.microsoft.com/data/

cya,
PatrikB

------------------
*så kan det gå när inte haspen är på*

Medlem sedan aug. 200160 inlägg
#7

Vad tror du om det här?

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\webb\news.mdb"
Set RS = Conn.OpenSchema(28)

Do Until RS.EOF
Response.Write "Tabell namn: "
Response.Write RS("TABLE_NAME") & "<br>"
Response.Write "Primary key: "
Response.Write RS("COLUMN_NAME") & "<br>"
RS.MoveNext
Loop

:OO

Medlem sedan juli 20011 129 inlägg
#8

Oj förlåt...
Jag skrev
RecSet.OpenSchema(4)... Jag menade RecSet.OpenSchema(28)...

Jag får kolla på den andra lösningen...
Och hoppas på det bästa...

------------------
Jag har en vit hund, eller är det en isbjörn?

Medlem sedan juli 20011 129 inlägg
#9

Ja du boma... :e
Jag får väl testa! :)

------------------
Jag har en vit hund, eller är det en isbjörn?

Medlem sedan juli 20011 129 inlägg
#10

Bo förfan!
Du är en demon!

Det funkade fullständigt lysande!

Brilliant min vän, brilliant! :e

------------------
Jag har en vit hund, eller är det en isbjörn?

Medlem sedan mars 20002 836 inlägg
#11

Denna funkar oxå ... + att den plockar fram fälttypen oxå ... den e ju oxå intressant för en PK är inte alltid av typen integer.

		Set objRS = objDB.OpenSchema(28)
			If Not objRS.EOF Then
				Do Until objRS.EOF
					strTableName = objRS("TABLE_NAME")
					strPKFieldName = objRS("COLUMN_NAME")
					varPKFieldType = objRS("COLUMN_NAME").Type
					
					If Not Left(strTableName,4) = "MSys" Then
						Response.Write "<B>" & strTableName & "</B><BR>" & _
							"Primary Key: " & strPKFieldName & "<BR>" & _
							"Fieldtype: " & varPKFieldType & "<hr>"
					End If
					objRS.MoveNext
				Loop
			End If
		Set objRS = Nothing

cya,
PatrikB

------------------
*så kan det gå när inte haspen är på*

Medlem sedan juli 20011 129 inlägg
#12

Tack PatrikB!

Det behövdes det där med! :)

------------------
Jag har en vit hund, eller är det en isbjörn?

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)