Bonjour,

Je gère un site intranet en ASP qui communique avec une base Access sur le serveur. Seul hic (et pas des moindres) : je n'ai pas la possibilité de mettre à jour le site moi même car je n'ai pas la main sur le serveur...

Je m'explique : Je gère tout le site en local, et lorsque je veux publier le tout, j'envoie mes pages à qqun qui les met à jour pour moi sur le servAeur global. (Oui, ma société est bizarre mais je peux pas faire autrement...)

Donc, j'ai trouvé une solution de contournement : j'ai créé une page que j'ai appelée "SQL.asp", où se trouve un formulaire avec une zone de texte TEXTAREA. Pour mettre à jour une table de ma base Access, je saisie mes requêtes SQL dans la zone de texte, et quand je soumet le formulaire, j'ai un Conn.execute(request.form("SQL"))... C'est pas très pratique, mais c'est la seule solution que j'ai trouvé pour l'instant pour ne pas être trop dépendant.

Cette solution est bien pour une requête unique du style "INSERT INTO... VALUES...)... Mais j'ai certaines tables entières à mettre à jour, qui peuvent contenir 3000, 4000, 5000... enregistrements... Donc j'ai mis au point un système : je met dans ma zone de texte toutes mes requêtes séparées par un point-virgule, et lorsque le formulaire est envoyé, un "split" découpe le Request.form("SQL") grâce au point-virgule et execute chaque requête SQL une par une. Et ca marche très bien !!!

SAUF que... (d'où ce sujet...)

Apparement Request.Form("SQL") n'accepte pas un nombre infini de données... Lorsque j'ai trop de caractères, j'ai un beau message d'erreur "dépassement de la pile"... Et ca vient bien du fait que j'ai trop de données dans ma zone de texte... Pour que ca marche je dois "découper" les 3000 requêtes en paquets de 1000... Pas très pratique...

Je vous met ici le bout de code me permettant d'executer ces requêtes multiples :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
If Request.Form("SQL") <> "" Then
 
		Tableau = Split(Request.Form("SQL"),";")
 
				For i = 0 to Ubound(Tableau)
					Conn.Execute(Tableau(i))
				Next
 
End If
Y a t-il une solution ? Est-ce que je pourrais faire différement sachant que je n'ai pas la main sur les fichier du serveur "directement" et que je ne peux pas modifier les droits d'écriture des dossiers etc...

Merci beaucoup pour votre aide