cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008
-
30 mai 2007 à 16:44
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 2010
-
7 juin 2007 à 15:11
Bonjour,
Comme j'ai pu constater sur ce forum, il y a toujours une solution, alors je me demander si qq1 en n'aurais une pour moi :
sur un bouton j'ai besoin d'executer 2 fonctions :
fonction 1 en C#, Insert / Select SQL coté serveur etc ...;
fonction 2 en javascript, Generation de signer dans word coté client.
Aujourd'hui je n'ai pas de solution pour executer les 2 actions avec une seule opération de l'utilisateur.
je me demandais, si qq1 aurai une idée, soit pour piloter word en C# coté serveur avec word sur le serveur bien sur; soit d'exécuter mes 2 fonctions une à la suite de l'autre (C# puis javascript) avec une seule intervention de l'utilisateur ???
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 20101 30 mai 2007 à 22:30
re,
tu peux faire cela de la manière suivante (je pense):
Tu éxécutes ton code côté serveur et à la fin de cette fonction, tu génères un script (javascript) qui appelle ton javascript.
De cette manière, lorsque l'utilisateur clique, la page retourne vers le serveur, exécute insert/update, écrit l'appel à ton javascript.
Lorsque la page est affichée sur le poste client, le javascript se lance automatiquement (grâce au petit bout de javascript que tu as ajouté).
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 31 mai 2007 à 14:46
Bonjour,
merci de ta reponse, mais j'ai un souci c que ma fonction de génération vers word en javascript est sur la page HTLM entre deux balise SCRIPT donc il ne m'est pas pssible de faire un Response.Write()
donc le ne sais pas comment lancer ma fontion qui est dans ma page aspx depuis mon code behind
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 31 mai 2007 à 14:46
Bonjour,
merci de ta reponse, mais j'ai un souci c que ma fonction de génération vers word en javascript est sur la page HTLM entre deux balise SCRIPT donc il ne m'est pas pssible de faire un Response.Write()
donc le ne sais pas comment lancer ma fontion qui est dans ma page aspx depuis mon code behind
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Page sans titre</title>
<script language="javascript">
function SayHello(){
alert('Hello');
}
</script>
</head>
<form id="form1" runat="server">
<hr />
<hr />
</form>
</html>
================= Code Behind ===========================
Partial Class Default2
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sb As New System.Text.StringBuilder()
Try
'Faire insert dans base
'Ecrire script pour lancer script
sb.Append("<script>SayHello();</script>")
If Not Me.ClientScript.IsClientScriptBlockRegistered("_HelloKey") Then
Me.ClientScript.RegisterClientScriptBlock(Me.Page.GetType(), "_HelloyKey", sb.ToString())
End If
Catch ex As Exception
End Try
End Sub
End Class
yopyop
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 1 juin 2007 à 09:43
Bonjour,
ton bout de code fonctionne bien sur une appli "vierge" mais sur mon appli j'ai le même message d'erreur que pour un response.write
Càd : Saut de ligne dans la constante !!!!
je pense apres je peux faire erreur mais je crois que le problème viens du fait que j'ai deja des balises script dans mon cde html
/***********************************************************
Chargement de la page
***********************************************************/
void Page_Load (Object o, EventArgs e)
{
if (! IsPostBack) // On charge que la 1ere fois
{
String id = Session["id"].ToString();
//////////////////////////////////////////////////
///Requete pour affichage du bouton Recap Berim //
/////////////////////////////////////////////////
SqlConnection conB = new SqlConnection(parametre);
String requeteB= "SELECT count(*) AS NBerim FROM POSTE WHERE BERIM='1' AND COM_ID ='"+id+"'";
// on ouvre la connection
conB.Open();
// Préparation d'une commande
SqlCommand maCommandeB=conB.CreateCommand();
maCommandeB.CommandText=requeteB;
// Envoie de la requete
SqlDataReader resultatB= maCommandeB.ExecuteReader();
// On se met sur la ligne de resultats
resultatB.Read();
String NB_berim=(String)resultatB["NBerim"].ToString();
conB.Close();
if (NB_berim!="0")
{
generer_recap_berim.Visible= true;
recap_berim_doc.Visible=true;
}
else
{
generer_recap_berim.Visible= false;
recap_berim_doc.Visible=false;
}
//////////////////////////////////////////////////
///Requete pour affichage du bouton Recap //
/////////////////////////////////////////////////
SqlConnection conC = new SqlConnection(parametre);
String requeteC= "SELECT count(*) AS Nrecap FROM POSTE WHERE BERIM='0' AND COM_ID ='"+id+"'";
// on ouvre la connection
conC.Open();
// Préparation d'une commande
SqlCommand maCommandeC=conC.CreateCommand();
maCommandeC.CommandText=requeteC;
// Envoie de la requete
SqlDataReader resultatC= maCommandeC.ExecuteReader();
// On se met sur la ligne de resultats
resultatC.Read();
String NB_recap=(String)resultatC["Nrecap"].ToString();
conC.Close();
if (NB_recap!="0")
{
generer_recap.Visible= true;
recap_doc.Visible=true;
}
else
{
generer_recap.Visible= false;
recap_doc.Visible=false;
}
// On charge la dropdownlist : CORP D'ETAT
/****************************************************************/
// Declaration de la connection
SqlConnection con1 = new SqlConnection(parametre);
String requete1 ="SELECT * FROM CORP order by CORP_NOM";
con1.Open();
SqlDataAdapter mdacorpetat= new SqlDataAdapter(requete1,con1);
// Utilisation du SQLDataSet
DataSet mdscorpetat= new DataSet();
// On donne un nom et on charge le dataSet, grace au SqlAdapter
mdacorpetat.Fill(mdscorpetat,"CORP");
// On lie le datasource à la dropdownlist
corpetat.DataSource=mdscorpetat;
corpetat.DataTextField="CORP_NOM"; // nom de la colonne
corpetat.DataValueField="CORP_ID"; // nom de la clef
corpetat.DataBind();
con1.Close();
// On charge la dropdownlist : INTERVENANT
/****************************************************************/
requete1 ="SELECT * FROM INTERVENANT order by INTER_NOM";
con1.Open();
SqlDataAdapter mdaintervenant= new SqlDataAdapter(requete1,con1);
// Utilisation du SQLDataSet
DataSet mdsintervenant= new DataSet();
// On donne un nom et on charge le dataSet, grace au SqlAdapter
mdaintervenant.Fill(mdsintervenant,"INTERVENANT");
// On lie le datasource à la dropdownlist
intervenant.DataSource=mdsintervenant;
intervenant.DataTextField="INTER_NOM"; // nom de la colonne
intervenant.DataValueField="INTER_ID"; // nom de la clef
intervenant.DataBind();
con1.Close();
// On charge la dropdownlist : TVA
/****************************************************************/
// Chargement de la dropdownlist periode de facturation
requete1 ="SELECT * FROM TVA ";
con1.Open();
SqlDataAdapter mdaTva= new SqlDataAdapter(requete1,con1);
// Utilisation du SQLDataSet
DataSet mdsTva= new DataSet();
// On donne un nom et on charge le dataSet, grace au SqlAdapter
mdaTva.Fill(mdsTva,"TVA_TAUX");
// On lie le datasource à la dropdownlist
Tva.DataSource=mdsTva;
Tva.DataTextField="TVA_TAUX"; // nom de la colonne
Tva.DataValueField="TVA_ID"; // nom de la clef
Tva.DataBind();
con1.Close();
// Declaration de la connection
SqlConnection con = new SqlConnection(parametre);
String requete = "SELECT count(*) as nb FROM POSTE WHERE COM_ID='"+id+"' ";
// on ouvre la connection
con.Open();
// Préparation d'une commande
SqlCommand maCommande=con.CreateCommand();
maCommande.CommandText=requete;
// Envoie de la requete
SqlDataReader resultat= maCommande.ExecuteReader();
// On se met sur la ligne de resultats
resultat.Read();
String nb =(String)resultat["NB"].ToString();
con.Close();
if (nb!="0")
{
/////////////////////////////////
///Tableau des Postes //
/////////////////////////////////
/// Selection et Affichage des postes dans le repeaterposte correspondant si 1 valeur presente
//******************************************************************************************************************/
requete ="SELECT BERIM,POS_NUM,BON_NUM,CORP_NOM,POS_MONTANT,INTER_NOM, (POS_MONTANT*(1+TVA_TAUX/100)) AS POS_MONTANT_TTC,TVA_TAUX,CONVERT(char,POS_DATE_DEBUT,103) AS POSDATEDEBUT,CONVERT(char,POS_DATE_FIN,103) AS POSDATEFIN FROM POSTE, INTERVENANT, CORP,TVA WHERE TVA.TVA_ID=POSTE.TVA_ID AND CORP.CORP_ID=POSTE.CORP_ID AND INTERVENANT.INTER_ID= POSTE.INTER_ID AND COM_ID ='"+id+"'";
// Utilisation du SQLDataAdapter pour realiser la requete
con.Open();
SqlDataAdapter monDataAdapterposte= new SqlDataAdapter(requete,con);
// Utilisation du SQLDataSet (datasource)
DataSet monDataSetposte= new DataSet();
// On donne un nom et on charge le dataSet, grace au SqlAdapter
monDataAdapterposte.Fill(monDataSetposte,"COM_ID");
monRepeaterposte.DataSource= monDataSetposte.Tables["COM_ID"].DefaultView;
monRepeaterposte.DataBind();
con.Close();
// On crée la requete
requete= "SELECT ROUND ( SUM(POS_MONTANT),2 ) AS TOTALHT,ROUND ( SUM(POS_MONTANT*(1+TVA_TAUX/100)),2 ) AS TOTALTTC,ROUND ( SUM(POS_MONTANT*(1+TVA_TAUX/100)-POS_MONTANT),2 ) AS TOTALTVA FROM POSTE, TVA WHERE POSTE.TVA_ID=TVA.TVA_ID AND COM_ID='"+id+"'";
con.Open();
// Préparation d'une commande
SqlCommand maCommande1=con.CreateCommand();
maCommande1.CommandText=requete;
// Envoie de la requete
SqlDataReader resultat1= maCommande1.ExecuteReader();
// On se met sur la ligne de resultats
resultat1.Read();
if (resultat1["TOTALHT"].ToString() !="")
{
label2.Visible=true;
label21.Visible=true;
label22.Visible=true;
label2.Text="Total des montants HT : ";
label21.Text="Total des montants TVA : ";
label22.Text="Total des montants TTC : ";
label3.Visible=true;
label4.Visible=true;
label5.Visible=true;
double s2=(double)resultat1["TOTALHT"];
double s3=(double)resultat1["TOTALTVA"];
double s4=(double)resultat1["TOTALTTC"];
/////////////////////////////////////////////////
///Tableau des Postes pour génération de recap //
////////////////////////////////////////////////
// On crée la requete
requete1= "SELECT count(*) AS NB FROM POSTE WHERE BERIM='0' AND COM_ID ='"+id+"'";
// on ouvre la connection
con.Open();
// Préparation d'une commande
SqlCommand maCommande0=con.CreateCommand();
maCommande0.CommandText=requete1;
// Envoie de la requete
SqlDataReader resultat0= maCommande0.ExecuteReader();
// On se met sur la ligne de resultats
resultat0.Read();
tailleA_poste=resultat0.GetInt32(0);
con.Close();
if (tailleA_poste !=0)
{
// On crée la requete
requete= "SELECT ROUND ( SUM(POS_MONTANT),2 ) AS TOTALHT,ROUND ( SUM(POS_MONTANT*(1+TVA_TAUX/100)),2 ) AS TOTALTTC,ROUND ( SUM(POS_MONTANT*(1+TVA_TAUX/100)-POS_MONTANT),2 ) AS TOTALTVA FROM POSTE, TVA WHERE POSTE.TVA_ID=TVA.TVA_ID AND BERIM='0' AND COM_ID='"+id+"'";
// on ouvre la connection
con.Open();
// Préparation d'une commande
SqlCommand maCommande000=con.CreateCommand();
maCommande000.CommandText=requete;
// Envoie de la requete
SqlDataReader resultat000= maCommande000.ExecuteReader();
// On se met sur la ligne de resultats
resultat000.Read();
double totalhtre=(double)resultat000["TOTALHT"];
double totaltvare=(double)resultat000["TOTALTVA"];
double totalttcre=(double)resultat000["TOTALTTC"];
totalhtreloc.Value=totalhtre.ToString().Replace(",",".");
totaltvareloc.Value=totaltvare.ToString().Replace(",",".");
totalttcreloc.Value=totalttcre.ToString().Replace(",",".");
con.Close();
// Préparation d'une commande
SqlCommand maCommandex=con.CreateCommand();
maCommandex.CommandText=requete;
requete ="SELECT BERIM,BON_NUM,CORP_NOM,POS_MONTANT,INTER_NOM, (POS_MONTANT*(1+TVA_TAUX/100)) AS MONTANT_TTC,TVA_TAUX,CONVERT(char,POS_DATE_DEBUT,103) AS POSDATEDEBUT,CONVERT(char,POS_DATE_FIN,103) AS POSDATEFIN FROM POSTE, INTERVENANT, CORP,TVA WHERE TVA.TVA_ID=POSTE.TVA_ID AND CORP.CORP_ID=POSTE.CORP_ID AND INTERVENANT.INTER_ID= POSTE.INTER_ID AND BERIM='0' AND COM_ID ='"+id+"'";
con.Open();
// Préparation d'une commande
maCommandex.CommandText=requete;
SqlDataReader resultatx= maCommandex.ExecuteReader();
// On se met sur la ligne de resultat
int cpt=0;
while ( resultatx.Read())
{
tabA_poste_num[cpt]=resultatx["BON_NUM"].ToString().Trim().Replace("\r\n"," ");
tabA_poste_corp[cpt]=resultatx["CORP_NOM"].ToString().Trim().Replace("\r\n"," ");
tabA_poste_intervenant[cpt]=resultatx["INTER_NOM"].ToString().Trim().Replace("\r\n"," ");
tabA_poste_montant[cpt]=resultatx["POS_MONTANT"].ToString().Trim().Replace("\r\n"," ");
tabA_poste_tva[cpt]=resultatx["TVA_TAUX"].ToString().Trim().Replace("\r\n"," ");
tabA_poste_montant_TT[cpt]=resultatx["MONTANT_TTC"].ToString().Trim().Replace("\r\n"," ");
cpt++;
}
resultatx.Close();
con.Close();
}
///////////////////////////////////////////////////////
///Tableau des Postes pour génération de recap_berim //
//////////////////////////////////////////////////////
// On crée la requete
requete1= "SELECT count(*) AS NB FROM POSTE WHERE BERIM='1' AND COM_ID ='"+id+"'";
// on ouvre la connection
con.Open();
// Préparation d'une commande
SqlCommand maCommande00=con.CreateCommand();
maCommande00.CommandText=requete1;
// Envoie de la requete
SqlDataReader resultat00= maCommande00.ExecuteReader();
// On se met sur la ligne de resultats
resultat00.Read();
tailleB_poste=resultat00.GetInt32(0);
con.Close();
if (tailleB_poste !=0)
{
// On crée la requete
requete= "SELECT ROUND ( SUM(POS_MONTANT),2 ) AS TOTALHT,ROUND ( SUM(POS_MONTANT*(1+TVA_TAUX/100)),2 ) AS TOTALTTC,ROUND ( SUM(POS_MONTANT*(1+TVA_TAUX/100)-POS_MONTANT),2 ) AS TOTALTVA FROM POSTE, TVA WHERE POSTE.TVA_ID=TVA.TVA_ID AND BERIM='1' AND COM_ID='"+id+"'";
// on ouvre la connection
con.Open();
// Préparation d'une commande
SqlCommand maCommande0000=con.CreateCommand();
maCommande0000.CommandText=requete;
// Envoie de la requete
SqlDataReader resultat0000= maCommande0000.ExecuteReader();
// On se met sur la ligne de resultats
resultat0000.Read();
double totalhtbe=(double)resultat0000["TOTALHT"];
double totaltvabe=(double)resultat0000["TOTALTVA"];
double totalttcbe=(double)resultat0000["TOTALTTC"];
totalhtberim.Value=totalhtbe.ToString().Replace(",",".");
totaltvaberim.Value=totaltvabe.ToString().Replace(",",".");
totalttcberim.Value=totalttcbe.ToString().Replace(",",".");
con.Close();
// Préparation d'une commande
SqlCommand maCommande0x=con.CreateCommand();
maCommande0x.CommandText=requete;
requete ="SELECT BERIM,BON_NUM,CORP_NOM,POS_MONTANT,INTER_NOM, (POS_MONTANT*(1+TVA_TAUX/100)) AS MONTANT_TTC,TVA_TAUX,CONVERT(char,POS_DATE_DEBUT,103) AS POSDATEDEBUT,CONVERT(char,POS_DATE_FIN,103) AS POSDATEFIN FROM POSTE, INTERVENANT, CORP,TVA WHERE TVA.TVA_ID=POSTE.TVA_ID AND CORP.CORP_ID=POSTE.CORP_ID AND INTERVENANT.INTER_ID= POSTE.INTER_ID AND BERIM='1' AND COM_ID ='"+id+"'";
con.Open();
// Préparation d'une commande
maCommande0x.CommandText=requete;
SqlDataReader resultat0x= maCommande0x.ExecuteReader();
// On se met sur la ligne de resultat
int cpt1=0;
while ( resultat0x.Read())
{
tabB_poste_num[cpt1]=resultat0x["BON_NUM"].ToString().Trim().Replace("\r\n"," ");
tabB_poste_corp[cpt1]=resultat0x["CORP_NOM"].ToString().Trim().Replace("\r\n"," ");
tabB_poste_intervenant[cpt1]=resultat0x["INTER_NOM"].ToString().Trim().Replace("\r\n"," ");
tabB_poste_montant[cpt1]=resultat0x["POS_MONTANT"].ToString().Trim().Replace("\r\n"," ");
tabB_poste_tva[cpt1]=resultat0x["TVA_TAUX"].ToString().Trim().Replace("\r\n"," ");
tabB_poste_montant_TT[cpt1]=resultat0x["MONTANT_TTC"].ToString().Trim().Replace("\r\n"," ");
cpt1++;
}
resultat0x.Close();
con.Close();
}
}
}// fin du postback
////////////////////////////////////////////
///Affichage des liens vers les Documents //
///////////////////////////////////////////
String trav = Session["id"].ToString();
if (!File.Exists("[file://\\Doc\\recap\\recap_"+trav+".doc \\Doc\\recap\\recap_"+trav+".doc]";
recap_doc.Target="_new";
recap_doc.Enabled=true;
generer_recap.Visible= false;
}
if (!File.Exists("[file://\\Doc\\recap\\recap_berim_"+trav+".doc \\Doc\\recap\\recap_berim_"+trav+".doc]";
recap_berim_doc.Target="_new";
recap_berim_doc.Enabled=true;
generer_recap_berim.Visible= false;
}
if(Session["id"] != null)
{
//On recupere l'id en session
String id = Session["id"].ToString();
// On recupere le delais d'execution
/**********************************************/
// Declaration de la connection
SqlConnection con = new SqlConnection(parametre);
String requete = "SELECT PERIODE.PERI_POID FROM COMMANDE, PERIODE WHERE PERIODE.PERI_ID=COMMANDE.PERI_ID AND COM_ID='"+id+"' ";
// on ouvre la connection
con.Open();
// Préparation d'une commande
SqlCommand maCommande0=con.CreateCommand();
maCommande0.CommandText=requete;
// Envoie de la requete
SqlDataReader resultat0= maCommande0.ExecuteReader();
// On se met sur la ligne de resultats
resultat0.Read();
// On recupere les informations sur la commande
/**********************************************/
requete = "SELECT CONVERT(char,(COM_DATE + "+resultat0["PERI_POID"]+") ,103) AS COMDATEFIN, CONVERT(char,COM_DATE,103) AS COMDATE,CONVERT(char,COM_DATE_DEBUT,103) AS COMDATEDEBUT, COM_ID,COM_NUM,LOCATAIRE,AFFECTATION,BATIMENT,ETAGE,PERIODE_TMP,CITE_NOM,DISTRICT_NOM,RESP_NOM FROM COMMANDE,CITE, DISTRICT, RESPONSABLE, PERIODE WHERE DISTRICT.DISTRICT_ID=CITE.DISTRICT_ID AND CITE.RESP_ID=RESPONSABLE.RESP_ID AND PERIODE.PERI_ID=COMMANDE.PERI_ID AND COMMANDE.CITE_ID=CITE.CITE_ID AND COM_ID='"+id+"' ";
// on ouvre la connection
con.Close();
con.Open();
// Préparation d'une commande
SqlCommand maCommande=con.CreateCommand();
maCommande.CommandText=requete;
// Envoie de la requete
SqlDataReader resultat= maCommande.ExecuteReader();
// On se met sur la ligne de resultats
resultat.Read();
num.Value=(String)resultat["COM_ID"].ToString();
com_num.Text=(String)resultat["COM_NUM"].ToString();
locataire.Text =(String)resultat["LOCATAIRE"].ToString();
affectation.Text =(String)resultat["AFFECTATION"].ToString();
batiment.Text =(String)resultat["BATIMENT"].ToString();
etage.Text =(String)resultat["ETAGE"].ToString();
date.Text =(String)resultat["COMDATE"].ToString();
datedebut.Text =(String)resultat["COMDATEDEBUT"].ToString();
periode.Text =(String)resultat["PERIODE_TMP"].ToString();
cite.Text =(String)resultat["CITE_NOM"].ToString();
district.Text =(String)resultat["DISTRICT_NOM"].ToString();
responsable.Text =(String)resultat["RESP_NOM"].ToString();
datefin.Text = (String)resultat["COMDATEFIN"].ToString();
con.Close();
date_day.Value =DateTime.Now.ToString("dd/MM/yyyy");
}
else
{
erreur.Text="Problème réseaux :Refaire la sélection";
}
}
/*****************************************************************************************
Fonction permettant de déclencher l'évènement validation qui correspond au bouton valider
*******************************************************************************************/
void selectionner(Object o, RepeaterCommandEventArgs e)
{
try
{
String id = Session["id"].ToString();
String identifiant=((LinkButton)e.CommandSource).Text;
// Declaration de la connection
SqlConnection con = new SqlConnection(parametre);
// On recupere les informations du poste
/**********************************************/
String requete = "SELECT POS_NUM,INTER_NOM FROM POSTE, INTERVENANT WHERE INTERVENANT.INTER_ID=POSTE.INTER_ID AND BON_NUM='"+identifiant+"' AND COM_ID='"+id+"' ";
// on ouvre la connection
con.Open();
// Préparation d'une commande
SqlCommand maCommande=con.CreateCommand();
maCommande.CommandText=requete;
// Envoie de la requete
SqlDataReader resultat= maCommande.ExecuteReader();
// On se met sur la ligne de resultats
resultat.Read();
String Intervenant=(String)resultat["INTER_NOM"].ToString();
String Identifiant=(String)resultat["POS_NUM"].ToString();
con.Close();
if (Intervenant=="Atec")
{
}
catch(SqlException err)
{
Response.Redirect("erreur.aspx");
}
}
/*****************************************************************************************
Fonction permettant de déclencher l'évènement validation qui correspond au bouton valider
*******************************************************************************************/
void Enregistrer(Object o,EventArgs e)
{
try
{
SqlConnection con = new SqlConnection(parametre);
// on complete les infos
String requete= "INSERT INTO CHRONO (DATE_CHRONO) VALUES ('"+date_day.Value+"')";
con.Open();
// Préparation d'une commande
SqlCommand maCommande=con.CreateCommand();
maCommande.CommandText=requete;
// Envoie de la requete
maCommande.ExecuteNonQuery();
con.Close();
//////////////////////////////////////////////////////////////////////////////////////////
/// ICI declanchement de la fonction générer coté client /////
////////////////////////////////////////////////////////////////////////////////////////
}
catch(SqlException err)
{
Response.Redirect("erreur.aspx");
}
}
/*****************************************************************************************
Fonction permettant de déclencher l'ajout d'un poste "ajouter"
*******************************************************************************************/
SqlConnection con = new SqlConnection(parametre);
// on complete les infos
String requete= "INSERT INTO POSTE (COM_ID,BON_NUM,INTER_ID,CORP_ID,BERIM,POS_MONTANT,POS_DATE_DEBUT,POS_DATE_FIN,TVA_ID) VALUES ('"+num.Value+"','"+bon.Text.Replace("'","''")+"','"+sintervenant+"','"+scorpetat+"','"+sberim+"','"+montant.Text.Replace("'","''")+"','"+pdatedebut.Text+"','"+pdatefin.Text+"','"+sTva+"')";
con.Open();
// Préparation d'une commande
SqlCommand maCommande=con.CreateCommand();
maCommande.CommandText=requete;
// Envoie de la requete
maCommande.ExecuteNonQuery();
con.Close();
function GetNewDocOnTemplate(p_TemplateUrl)
{
var l_WordApp = new ActiveXObject("Word.Application");
if (g_Debug) l_WordApp.Visible=true;
l_WordApp.Documents.Add(p_TemplateUrl);
return l_WordApp;
}
function NewPropertyOnDoc(p_WordApp,p_PropertyName,p_PropertyValue,p_PropertyType){
p_WordApp.ActiveDocument.CustomDocumentProperties.Add(p_PropertyName,false,p_PropertyType,p_PropertyValue,0);
//Attention les champs sont mis jour dans SaveAndQuitDocTo
}
function SaveAndQuitDocTo(p_WordApp,p_SaveUrl)
{
// p_WordApp.ActiveDocument.Fields.Update();//Met jour les champs dans le document
p_WordApp.ActiveDocument.Fields.Update(); //modif OBEL 29/12/2004 compatibilité office 2003 et XP
if (!g_Debug) {
p_WordApp.ActiveDocument.SaveAs(p_SaveUrl);
p_WordApp.Quit(false);
}
delete p_WordApp;
}
/****************************************************************************************************************************************/
// Fonction assurant la génération du TABLEAU DES RECAP
/****************************************************************************************************************************************/
var tailleA_poste;
tabA_poste_num= new Array();
tabA_poste_intervenant= new Array();
tabA_poste_corp=new Array();
tabA_poste_montant= new Array();
tabA_poste_tva=new Array();
tabA_poste_montant_TT=new Array();
function init_posteA(poste_num,poste_corp,poste_intervenant,poste_montant,poste_tva,poste_montant_TT,indice)
{
function init_tailleA_poste(val)
{
tailleA_poste=val;
}
/****************************************************************************************************************************************/
// Fonction assurant la génération du TABLEAU DES RECAP berim
/****************************************************************************************************************************************/
var tailleB_poste;
tabB_poste_num= new Array();
tabB_poste_intervenant= new Array();
tabB_poste_corp=new Array();
tabB_poste_montant= new Array();
tabB_poste_tva=new Array();
tabB_poste_montant_TT=new Array();
function init_posteB(poste_num,poste_corp,poste_intervenant,poste_montant,poste_tva,poste_montant_TT,indice)
{
function init_tailleB_poste(val)
{
tailleB_poste=val;
}
/***********************************************************
Generer la fiche recap
***********************************************************/
function generer(choix)
{
if (choix == 'recap_reloc')
{
var g_WordApp=GetNewDocOnTemplate("[../../imgs/menu/veolia.css
<meta content="MSHTML 6.00.2600.0" name="GENERATOR" />
</head>
J'ai splitter le tag de fermeture car Visual studio me faisait chi...:
Dim sJSCode As String = "<script language=javascript>SayHello();" & "<" & "/script>"
Si tu es en 1.1 je t'envoie un code identique (et cette fois je le ferai en c# )
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 4 juin 2007 à 14:08
Merci de venir a mon secours !!!
Mais comme je te le disais plus sur une autre page j'ai pas de souci avec ta fonction ou avec n'importe quelle fonction du type Response.Write etc....
mais avec cette page ou j'utilise un tableau entre 2 balises Script pour ma generation de tableau de variable vers word est là ça merde :
Admettons que pour i=10 tu as :
A: tabB_poste_num[10]->"Bonjour, saut de
ligne"
B: tabB_poste_corp[10]->"Bonjour la "quote" qui casse tout "
Ton script sera généré sous la forme suivante:
<script>
init_posteB("Bonjour, saut de
ligne","Bonjour la "quote" qui casse tout ", ...);
</script>
Le cas A (saut de ligne) fait que l'instruction javascript est coupée ... cela semble correspondre au message d'erreur que tu as indiqué
Le cas B peut également poser problème car il faut doubler les quotes.
Si je me souviens bien, le retour à la ligne en Javascript c'est \n.
Et si tu veux qu'une single quote ' ne soit pas mal interprétée tu la replace par \'.
Comme tu utilises les doubles quotes " dans tes appels de fonction JS, il te faut les doubler lorsque tu passes des strings,
Pour le retour à la ligne... <%=maString[i].Replace(Environment.NewLine,"\n")%>
J'ai remplacé le retour à la ligne par \n... mais tu dois le remplacer par quelque chose de compréhensible pour ton fichier output...
Juste pour voir si c'est bien ça le problème, remplaces simplement tes retours à la ligne par rien, idem pour les double quotes...
tu verrais rapidement si le problème vient de là...
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 5 juin 2007 à 14:25
Ok, j'ai trouvé le code qui va bien mais il y a toujours un MAIS :
string test="recap_reloc";
Response.Write("<script>alert("" + test + "")"+"<"+"/script>");
*Voila le MAIS
si Response.Write("<script>SayHello();"+"<"+"/script>");
ben la j'ai plus de message d'erreur par contre Objet Attendu !!!!!!!!!!!!!
Ah !!!!!!!!!!! je craque !!!!!!
en fait il apparait que je ne peux lancer que des fonctions native pas de fonction que je declare dans mon head ??!!!!???
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 20101 5 juin 2007 à 16:56
Re,
Evite le Response.write ...
Dans ton butto, après avoir fait ce que tu veux côté serveur, tu mets
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sb As New System.Text.StringBuilder()
Try
'Faire insert dans base
'Faire autre chose du côté serveur
'Ecrire script pour lancer script
sb.Append("<script>SayHello();</script>")
'Pour ASP_NET 2.0
'If Not Me.ClientScript.IsClientScriptBlockRegistered("_HelloKey") Then
' Me.ClientScript.RegisterClientScriptBlock(Me.Page.GetType(), "_HelloyKey", sb.ToString())
'End If
'Pour la 1.1
'Me.RegisterClientScriptBlock("_HelloKey", sb.ToString())
Catch ex As Exception
Throw
End Try
End Sub
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 5 juin 2007 à 19:10
Merci d'etre si cool yopyop!!!
J'ai essayé comme cela
StringBuilder sb = new StringBuilder();
sb.Append("<head><script language=JavaScript>generer ('recap_reloc');"+"<"+"/script></head>");
this.RegisterClientScriptBlock("clientScript", sb.ToString());
ou
this.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "clientScript", sb.ToString());
mon souci c'est que j'ai des variables recupérer grace à
var num = window.document.getElementById("num").value;
et là booom je n'ai pas la valeur des variables...
Autre chose j'ai essayer de mettre cela dans un label en fin de page html
à la place de Register ....
message.Text = sb.ToString();
alors là je recupère la valeur de mes variables mais j'ai une erreur sur ma page qui ne ce rafraichi pas correctement !!! il faut que j'appuis 20 fois sur recommencer !!!
En fait tous viens de cette putain de génération de fichier WORD coté client !!
Mais j'ai pas de solution pour le moment pour générer des word coté serveur en c#.
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 20101 5 juin 2007 à 19:50
re,
Tu es en ASPX 1.1 ou 2.0 ?
il ne faut pas utiliser
sb.Append("<head><script language= JavaScript>generer ('recap_reloc');"+"<"+"/script> </head> ");
mais
sb.Append("<script language =JavaScript>generer ('recap_reloc');"+"<"+"/script>");
T u peux aussi essayer RegisterStartupScript
ou
RegisterClientScriptBlock
Concernant :
var num = window.document.getElementById("num").value;
Fais un view source afin de voir si l'élément "num" existe bien... parfois le moteur de rendering d'asp.net modifie les id des éléments html.
Petite question:
J'espère que le but n'est pas de générer un document Word sur le serveur, mais bien sur le poste client... sinon je ne pense pas que cela fonctionnnera (actuellement tu sauves tout sur \\localhost... qui se trouve sur ta machine... le jour où tu mets ça sur un site internet/intranet, cela ne fonctionnera plus).
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 5 juin 2007 à 23:25
Aspx 2.0 c#
j'ai essayer en 1.1 et en 2.0
pour le head j'avais déja essayé, avec body aussi, même resultat...
pour la valeur de num la valeur est correcte mais indefini avec les fonctions RegisterStartupScript ou RegisterClientScriptBloc
pour la petite question qui fait rire bien !!!! evidement qu'aujourd'hui je cherche a générer code coté client il faudra effectivement que je change le chemin et que je configure correctement le compte du poll d'app de IIS 6 pour que la génération fonctionne du client vers un repertoire du serveur...
je n'en suis pas encore là mais piloter word uniquement sur le serveur sans transphert de données entre le client et le serveur cela serai pas mal, au moins je ne me ferais pas chier, je serais toujours en code behind !!! enfin si tu as un tuto en c# je prends...
pour ce qui est de l'admin W2K3 je suis au top !!! pour la prog c pas trop ça je suis un peux rouiller ça fait 10 ans que je n'avais pas fait de code alors bien sur c rouiller, surtout que C# ça n'existait pas !!! LOL l'ancètre !!!
Alors je crois que les fonctions que je dois utiliser pour générer son un peux complexe quand je combine l'insert SQL et la génération vers word js !! les deuxx séparement ça marche du feu de dieux
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 6 juin 2007 à 09:10
Effectivement, c'est bien pour cela que je cherche à lancer mon script Js coté serveur cela me permettra de séparer en 2 fichiers un .aspx et un .cs et j'y vérais plus clair moi aussi !!!! LOL
en fait le code qui fonction bien aujourd'hui et un input avec un evement js qui lance mes fonction de génération coté client et là it's beautiful !!! mais il faut que j'aille plus loin j'ai besoin d'enregistrer dans ma base les informations quand ou part qui a été générer le fichier !!!
tu aurais pas une idée pour lancer ma génération sur le serveur en pilotant word depuis le c# par hazard ??
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 20101 6 juin 2007 à 19:52
yop,
en fait tu peux tout à fait générer un fichier Word sur le serveur, mais il faut qu'il soit installé sur le serveur (tu peux faire de l'automation en c# tout comme en js)...
mais c'est assez déconseillé car si ton process plante, cela peut rendre le serveur instable....
au fait, pourquoi générer un fichier Word ? Pourquoi pas un PDF ?
cs_obel
Messages postés34Date d'inscriptionlundi 4 août 2003StatutMembreDernière intervention17 juin 2008 7 juin 2007 à 08:41
Bonjour, merci encore de ton aide,
effectivement il est tout a fait consevable de faire du pdf car il est exclu que l'utilisateur puisse faire une modif sur le doc générer, en fait dans mon code il ya une fonction en js qui générer en pdf mais c'est pas cool car je suis obligé d'acrobat sur tous les postes clients....
peut -on enregistrer le pdf en auto sur le serveur dans un rep spécifique avec le nom prédéfini ?
si tu as qqchose dans le genre je prend Aussi !!!
il y a til moin de chance que ça plante ?? et pour le modèle de document, quid du format ???