Ich erstelle eine Tabelle direkt aus dem ADO-Recordset mit field.name und field.value. Wie von einem anderen früheren Beitrag gesehen Retrieve ADO Recordset Field names (Classic ASP).
Wenn ich einen Schritt weiter gehe, versuche ich die Tabellenüberschriften basierend auf Werten aus einer anderen Datenbank umzubenennen. Im Wesentlichen wenn th = Column_1
dann schreiben "Vorname" usw.Erstellen Sie eine Funktion mit While-Schleife ASP VBScript?
Ich kann dies individuell mit einer "wenn dann" -Funktion mit spezifischen Code tun. Allerdings habe ich eine andere Datenbank, die alle richtigen Überschrift Namen hat und würde lieber while-Schleife über ein Recordset verwenden. Anstatt jede Zeile zu schreiben - columneheading1 = x und columleheading2 = y etc würde ich lieber eine while-Schleife erstellen.
Auch hier funktionieren die einzelnen "if then" -Anweisungen gut, wie unten im Code angegeben, aber das Recordset nicht.
Ich habe versucht, das Recordset und die Schleife zu beheben, aber nicht gut. Irgendwelche Ideen, warum die while-Schleife (oder Wiederholungsregion) in der Funktion nicht funktionieren würde?
Unten ist das Beispiel:
<table>
<thead>
<tr>
<%
Function Header_Name_Sub(Header_NameX)
Header_Name_Write = Header_NameX
If Header_Name_Write = "Project_File_ID" Then
Header_Name_Write = "File ID" ' this works great.
End If
If Header_Name_Write = "Project_Assignment_Name" Then
Header_Name_Write = "Project Name" ' this works great.
End If
' Have a data base of all header names based on column name ... this repeat is not working in the function. If I pull it out this section works fine elsewhere in the page...
Do While Not RS_Build_Numeric_Names.EOF
If CStr(Header_Name_Write) = CStr((RS_Header.Fields.Item("True_Column_Name").Value)) Then ' thought maybe string issue is why CStr
Header_Name_Write = (RS_Build_Numeric_Names.Fields.Item("Fixed_Column_Name").Value
End If
Loop
If Header_Name_Write = "Project_City" Then
Header_Name_Write = "City" ' this works great.
End If
End Function
%>
<%For Each fld in RS.Fields%>
<%
Header_Name_Sub(fld.Name)
%>
<th><span><%=Header_Name_Write%></span></th>
<%Next %>
</tr>
</thead>
<tbody>
<%
Do Until RS.EOF
OutputRow RS.Fields
RS.MoveNext
Loop
%>
</tbody>
</table>
<%
Sub OutputRow(fields)
%>
<tr>
<%For Each fld in fields%>
<td><span><%=(fld.Value)%></span></td>
<%Next %>
</tr>
<%
End Sub
%>
hier So ist die Bearbeitung in einfacher Form nur wurde mir klar. Innerhalb der Funktion ...
If Header_Name_Write = "Project_File_ID" Then
Header_Name_Write = "File ID" ' this works great.
End If
Funktioniert gut oben. Ich habe versucht, die While-Schleife zu verwenden, um die 50+ zusätzlichen 'If Then's' zu schreiben, als stattdessen einfach durchgeschleift wurde. Also wie kann ich in die Funktion die Extras eintragen?
If x = 1 Then Header_Name_Write = "File ID" End If
If x = 2 Then Header_Name_Write = "Next Header" End If
If x = 3 Then Header_Name_Write = "Another Header" End If
Ist es stattdessen eine for-Schleife?
Etwas weiter entlang ...
For Each fld in RS_Build_Numeric_Names.Fields
If Header_Confirm = (RS_Build_Numeric_Names.Fields.Item("Build_Project_Metric_Column_Name").Value) Then
Header_Name_Write = (RS_Build_Numeric_Names.Fields.Item("Build_Project_Metric_Name").Value)
End If
Next
Wenn ich ein für statment ist funktioniert für den ersten Datensatz nur in dem Re-Cord ... nicht die ganze Schleife.
Sollte ich eine Server.CreateObject ("Scripting.Dictionary")? – Brewy