Det är så att jag gjort ett administrationssystem mot SQL-Server, så att om man (som jag) inte har tillgång till Enterprise manager, men ändå vill administrera en SQL-databas så kan man göra det från detta system (förhoppningsvis)
Men för att förfina det så skulle jag vilja hämta ut datalängd på en kolumn, jag har letat lite och testat lite namn för att få tag i den, men icke.
För att få ut datatyp och kolumnamn så har jag hittils gjort på detta vis:
SQLStmt = "Select * From "& Tabell
Set RS = Conn.Execute(SQLStmt)
Set RSTypes = Conn.OpenSchema(22)
Dim arrData(40, 2)
cLoop = 0
Do Until RSTypes.EOF
If Not IsEmpty(RSTypes("Type_Name")) Then
arrData(cLoop, 0) = RSTypes("Type_Name")
arrData(cLoop, 1) = RSTypes("DATA_TYPE")
'arrData(cLoop, 2) = RSTypes("Data_Length")
cLoop = cLoop + 1
End If
RSTypes.MoveNext
Loop
Och om ni ser den 4:e raden i loopen så försökte jag hämta ut datalängden på kolumen, men det gick inte så fint. Någon som förstår vad jag menar och kanske har något underbart svar!
jag håller oxå på med en likadan funktion... hur fick du fram fältets storlek? jag tror jag använder samma utgångskod som dig... dvs den som ligger i filarkivet här på wF.. tabelladmin...
Det ger en viss klarhet men jag får fram längd på fält som inte stämmer riktigt med vad det egentligen är och på vissa fält som är text (access-databas) så får jag inte fram något alls...
Jag har gjort såhär i koden kanske är helt fel?!? :
<%
Tabell = Request.QueryString("Tabell")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath
If Request.Form("Func") = "Update" Then
Tabell = Request.Form("Tabell")
SQLStmt = "Alter Table "& Tabell &" "
'Falt0 Falt1 VARCHAR (50) DEFAULT '0' not null "
cLoop = 0
For Each Item In Request.Form
If Item <> "Tabell" And Item <> "Func" And Left(Item, 3) = "Old" Then
cLoop = cLoop + 1
NewShit = "New_" & Request.Form(Item)
DataTyp = "DataTyp_" & Request.Form(Item)
SQLStmt = SQLStmt & "Modify (" & Request.Form(Item) & " " & Request.Form(NewShit) & " " & Request.Form(DataTyp) & " NULL), "
End If
Next
SQLStmt = Left(SQLStmt, Len(SQLStmt) -2) & ""
Response.Write SQLStmt
On error resume next
Conn.Execute(SQLStmt)
Else
SQLStmt = "Select * From "& Tabell
Set RS = Conn.Execute(SQLStmt)
Set RSTypes = Conn.OpenSchema(22)
Dim arrData(14, 1)
cLoop = 0
Do Until RSTypes.EOF
If Not IsEmpty(RSTypes("Type_Name")) Then
arrData(cLoop, 0) = RSTypes("Type_Name")
arrData(cLoop, 1) = RSTypes("DATA_TYPE")
arrData(cLoop, 1) = RSTypes("Column_Size")
cLoop = cLoop + 1
End If
RSTypes.MoveNext
Loop
Set RSTypes = Nothing
'==================================
' Plocka fram längden på alla fält
'==================================
Const adSchemaColumns = 4
Set rsTypes = Conn.openSchema(adSchemaColumns, Array(Empty, Empty, Tabell, empty))
arrLength = RSTypes.GetRows
Set RSTypes = Nothing
'cLoop = 0
'Do While Not RS.EOF
' Response.Write arrLength(13, cLoop) & "<br>"
'cLoop = cLoop + 1
'RS.MoveNext
'Loop
'Set Rs = Nothing
cLoop = ""
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<link REL="STYLESHEET" HREF="style/huvudstyle.css" TYPE="TEXT/CSS">
</HEAD>
<BODY BgColor="#FFFFFF" Text="#000000">
<table width="610" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="5"> </td>
<td width="600"><em class="b">Inställningar » Tabelladmin » <u><%=tabell%></u><br><br></em><em>
<a href="Tabell_AddField.asp?Tabell=<%= Tabell%>"><Img Src="Bilder/Create_Table.gif" Border=0> Skapa nytt fält</a>
<br><br>
</em>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="35%" bgcolor="#000000"><em class="mw">Fältnamn</em></td>
<td width="38%" bgcolor="#000000"><em class="mw">Datatyp</em></td>
<td width="9%" bgcolor="#000000"><em class="mw">Fältlängd</em></td>
<td width="9%" bgcolor="#000000"><p align="center"><em class="mw">Ändra</em></p></td>
<td width="9%" bgcolor="#000000"><p align="center"><em class="mw">Ta bort</em></p></td>
</tr>
<%
tcolor = "#cccccc"
For Each Item In RS.Fields
counter = counter + 1
If counter Mod 2 = 0 then
color = tcolor
Else
color = "#ffffff"
End If
If item.type = "202" Then
typ = "Text"
typ2 = "VarChar"
ElseIf item.type = "203" Then
typ = "PM"
typ2 = "LongText"
ElseIf item.type = "7" Then
typ = "Datum/Tid"
typ2 = "DateTime"
ElseIf item.type = "3" Then
typ = "Tal"
typ2 = "Long"
End If
%>
<tr>
<td width="35%" bgcolor="<%=color%>" valign="top"><em><%=item.name%><%If typ = "Text" Then %><%' item.column_size %><% End If %></em></td>
<td width="38%" bgcolor="<%=color%>" valign="top"><em><%=typ%></em></td>
<td width="9%" bgcolor="<%=color%>" valign="top"><em>
<%
If cLoop = "" Then
cLoop = 0
End If
Response.Write arrLength(13, cLoop) & "<br>"
cLoop = cLoop + 1
'response.write cLoop
%>
</em></td>
<td width="9%" bgcolor="<%=color%>" valign="top"><p align="center"><a href="tabell_editfield.asp?field=<%=item.name%>&datatyp=<%=typ2%>&null=NULL&tabell=<%=tabell%>"><img src="../images/icons/redigera.gif" width="17" height="16" border="0"></a></td>
<td width="9%" bgcolor="<%=color%>" valign="top"><p align="center"><em><a href="#" OnClick="DeletePost('<%= Tabell%>', '<%= Item.Name%>')"><img src="../images/icons/radera.gif" alt="Ta bort" width="14" height="16" border="0"></a></em></td>
</tr>
<% Next %>
</Table>
<br><br>
<a href="Tabell.asp?Tabell=<%= Tabell%>"><<-- Återgå</a>
</b></font>
<Script Language="Javascript">
function DeletePost(Tabell, Field)
{
if(confirm("Är du säker på att du vill ta bort fältet \"" + Field + "\"?"))
location.href = "Tabell_DeleteField.asp?Tabell=" + Tabell + "&Field=" + Field;
}
</Script>
<%
Conn.Close
Set Conn = Nothing
Set RS = Nothing
%>
<% End If %>