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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 088 fois - Téléchargée 27 fois

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

Ajouter un commentaire

Commentaire

surfzoid
Messages postés
467
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
21 avril 2010
-
il me semble que ODBC et beaucoup moins performant qu ADO.NET, surtout sur du access et une boucle sur chaque enregistrements, un par un , en ce moment je bosse sur une BD paradox que je transfert dans une BD MS SQL chaque nuit, cette derniere a des million d'enregistrement(les caisse de parking, d'un aeroport d'une trés grande ville), ça doit surement coincé quelque part si j'affiche le formulaire avec une boucle qui vas de 0 a 1 000 000 ?

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.