Génération automatique de tableaux croisés en fonction d'une requête sql

Contenu du snippet

WriteTabCroise permet d'afficher un tableau généré automatiquement en fonction d'une reqûete SQL, en gardant les noms de collone présents dans votre gestionnaire de bdd.

J'utilise personnellement cette fonction pour afficher des requêtes croisées que j'ai créé avec Access, ça marche assez bien.

Source / Exemple :


function WriteTabCroise(sSQL, Titre)
'Génére automatiquement des tableaux croisés en fonction de la requête SQL

' sSQL = Requete SQL
' Titre = Titre du tableau

Set Connection	 = Server.CreateObject("ADODB.Connection")
Set RecordSet	 = Server.CreateObject("ADODB.RecordSet")

Connection.connectionString = DBPath
Connection.Open

if Titre <> "" then
	Response.write "<BR><B><Center>" & Titre & "</Center></B><BR>" & vbcrlf
End If

RecordSet.Open sSQL, Connection, 3, 3

if RecordSet.EOF = false then
	Response.write "<Table border=1 bordercolor=green cellspacing=0 cellspading=0 width='100%'>"
	Response.write "<TR align=center bgcolor=green>" & vbcrlf

	'Création des collones
	for each rsfield in recordset.Fields
  		Response.write "<TD><B><font color=yellow>" &  rsfield.Name & "</font></B></TD>" & vbcrlf
	next
	Response.write "</TR>" & vbcrlf

	'Affichage de chaque ligne
	Do while not RecordSet.EOF
		
		Response.write "<TR>" & vbcrlf
		i = 0
		For each RecordSetItem in RecordSet.Fields
			i = i + 1
			if i=1 then
				Response.write "<TD align=left nowrap>"  & vbcrlf
			else
				Response.write "<TD align=center>"  & vbcrlf	
			end if
		 
		  	if isnull(RecordSetItem) = true then
				Texte = "-"
		 	else
				Texte = RecordSetItem
				if isnumeric(RecordSetItem) = true then
					if RecordSetItem <> 0 then
						Texte = "<Font Color=red><B>" & Texte & "</B></font>" & vbcrlf
					end if
				else
					Texte = "<Font Color=green><B>" & Texte & "</B></font>" & vbcrlf
				end if
		  	end if
		
			Response.write Texte 
			Response.write "</TD>"  & vbcrlf
		next

 		Response.write "</TR>"   & vbcrlf
		RecordSet.MoveNext
	Loop
	Response.write "</TABLE><BR>"  & vbcrlf
end if
RecordSet.Close
Connection.Close
Set Connection = nothing
Set RecordSet = nothing

End function

Conclusion :


sSQL : Requete SQL à lire
Titre : Titre du tableau

N'oubliez pas de changer ceci:
Connection.connectionString = DBPath

Mettez à la place de DBPath votre chaine de connexion ODBC

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.