none
Asp.net - Runtime Error RRS feed

  • Question

  • Bonjour,

    Je ne connais presque rien en développement web :(, et j'ai un site web qui affiche des informations concernant les differentes divisions de ma société. Je ne connais pas l'architecture ou même où est installé (si c'est correct ce que je dis) et ca fait maintenant deux jours que j'ai eu l'erreur suivante:

    j'ai aucune idée, le site web marche nickel pour toutes les divisions sauf une, et le plus bizarre c'est que pour cette division il n'y avait plus de problème avant hier !!!

    SVP aidez-moi c'est urgent.

    Merci.



    • Modifié bouazizimedridha mercredi 10 octobre 2012 09:47
    • Type modifié Aurel Bera mercredi 17 octobre 2012 14:37 Pas de reponse
    • Type modifié Aurel Bera jeudi 18 octobre 2012 08:04 Answred
    mercredi 10 octobre 2012 09:46

Réponses

  • Bonjour

    Sur ce que je vois dans le code, vérifiez les valeurs des variables suivantes:

    string sCount = myDataRow["recordcount"].ToString().Trim();

    et

                    myDataRow["recid"].ToString()

    Je pense qu’un est nul.

    Pour le premier, vous devez  verifier strSQL qui remplit myDataRow.

    Pour corriger vous pouvez ou changer le SQL por qu’il replace null avec  0, ou modifier le code pour faire ça.

    Cordialement ,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 15 octobre 2012 11:12
  • Le problème est que ce code plante pour des données particulières. Donc Aurel ou moi ne pouvons que donner l'emplacement ou nous pensons que cela coince. Pour confirmer et être sur à 100%, il faudrait aller voir les données dans la base.

    Pour moi, le champ concerné serait donc recid dans la table tblAdminMainpageTree. De quel type est-ce champ ? Si c'est du texte bien vérifier que toutes les valeurs de cette colonne peuvent effectivement être converties en nombre car c'est ce qui est fait dans le code ce qui semble bizarre si c'était déjà un nombre dans la base. Je soupçonne donc que c'est stocké dans la base sous forme de texte et que l'un de ces textes est un nombre invalide ce qui fait échouer la conversion. Peut-être :

    SELECT Recid FROM tblAdminMainpageTree WHERE tblAdminMainpageTree LIKE '%[^0-9]%' ce qui devrait donner les lignes pour lesquels on a un caractère autre que 0 à 9 dans recid.

    Si cela donne rien vérifier les longueurs (cela pourrait être que la valeur est trop grande ou trop petite pour tenir dans un entier).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    lundi 15 octobre 2012 17:26
    Modérateur
  • Bonjour

    La même erreur on peut l’obtenir dans le cas ou on essaye de convertir la chaine vide dans un entier.

    String x="";

    Console.WriteLine(Int32.Parse(x));

    C’est pour ça que j’ai indiquée dans mon poste antérieur les deux lignes.

    Donc aussi faites attention aux champs nulls/vides.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 16 octobre 2012 09:39
  • Y compris le int.Parse(sCount) signalé par Aurel ? Cela vient de la colonne recordcount apparemment retourné par la même table tblAdminMainpageTree. Avez-vous vérifié cette valeur ?

    Quelle est la valeur de recordcount pour la division concernée ? Comme justement cela marche généralement mais que cela coince pour cette division, le problème vient bien d'une particularité de cette division ce qui me fait dire donc que cela vient très probablement d'une de ses données...

    Au fait si vous avez récupéré l'intégralité du code source vous devriez pouvoir faire exécuter le site sous Visual Studio et avec les mêmes données pour essayer de provoquer la même erreur sur votre PC (ce serait sans doute l'approche standard pour un développeur). Dans ce cas vous seriez positionné directement dans VS sur la ligne concernée.

    Cf éventuellement http://www.microsoft.com/visualstudio/fra/downloads#d-2010-express et Visual Web Developper 2010 Express. Au delà, il va être difficile d'aller plus loin sans vous faire aider par un développeur sur site qui pourrait avoir accès aux codes, utiliser peut-être VS, consulter les données de la base etc...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mardi 16 octobre 2012 11:14
    Modérateur

Toutes les réponses

  • Bonjour,

    Cette page ne fait qu'indiquer comment personnaliser la gestion des erreurs mais ne donne aucune information sur l'erreur elle-même (par sécurité). Il est donc impossible de vous aider à partir de cet affichage.

    Une première étape serait d'aller voir sur le serveur web (il faut trouver qq qui saura de quel serveur il s'agit) pour aller voir dans le journal des évènements Wndows qui doit contenir un message d'erreur plus précis.

    Comme c'est lié à une division en particulier, une erreur de programmation assez classique pourrait être due par exemple à la présence d'un apostrophe dans son nom ou son code mais là c'est vraiment de la devinette.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 10 octobre 2012 13:11
    Modérateur
  • Tout d'abord merci pour votre réponse.

    Pour vous mettre dans l'image: j'ai un portail web installé sur un serveur de production (mais je sait pas ou exactement dans le serveur). au niveau de la page d'acceuil on a un ensemble de boutons dont chacun ait comme nom le nom d'un division, lorsqu'on clique sur le bouton "division X" on accède à une page contenant les informations de cette division. Ces dernières sont issus du serveur SQL Server du site (chaque division à un serveur SQL).

    J'ai accés au serveur de production: Serveur SQL Server ou est installéé une base de données pour le site qui contient des inforrmations genre; noms des divisions, chaines des connexions de chaque serveur des divisions ...

    pour la division qui ait cette erreur d'affichage, si je modifie le chaine de connexion de son serveur SQL par un autre serveur d'une autre division tout marche nickel, donc je me suis dit que le problème est peut être n'est pas lié à mon portail web lui même puisque ca marche pour tooutes les autres divisions, mais un truc propre à cette division.

    sinon concernant le "serveur web" je c'est plus axactement de quoi s'agit-il? un serveur SQL ou ???, pour les Logs j'ai accéder au "Event viewer" sur Windows Server mais j'ai pas pu trouver l'erreur en question.

    Merci

    mercredi 10 octobre 2012 13:40
  • Bonjour,

    Vérifiez bien normalement dans le journal d'événement du serveur web (vérifier que vous êtes connecté sur le bon) il devrait avoir un warning dans la catégorie "ASP .NET". Donnez-nous les informations concernant ce Warning.

    Sans ces informations nous nous pourrons pas vous aider.

    L'autre solution (plus ou moins risqué le temps de la manipulation) est de modifier le fichier web.config de votre site web et mettre l'attribut "customErrors" à "Off", afin que vous puissiez voir le message d'erreur au complet lorsque vous naviguez sur votre site web. (Bien évidemment pensez à remettre l'option "customErrors" à son état initial après avoir récupéré les info sur l'erreur !).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 10 octobre 2012 14:05
    Modérateur
  • Et bien un nouveau bout de fil,

    voila ce que j'ai comme erreur lorsque je me connecte en local(au niveau du serveur Windows Server surlequel est monté le serveur web):

    [FormatException: Input string was not in a correct format.]

       System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +5511332

       System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +203

       DataFlow.plantpage.GetTeamViews(Int32 nTeam, String sDepartments, Int32& nIndex, String sImgType) +4819

      DataFlow.plantpage.BuildTeamNodes(Int32& nIndex) +2003

       DataFlow.plantpage.BuildPage() +91

       DataFlow.plantpage.Page_Load(Object sender, EventArgs e) +1717

       System.Web.UI.Control.OnLoad(EventArgs e) +125

       System.Web.UI.Control.LoadRecursive() +98

       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2508

    mercredi 10 octobre 2012 14:52
  • Ok donc on essaye apparemment de convertir du texte en nombre mais le texte n'est pas sous un format acceptable. Cela explique aussi pourquoi c'est lié à cette division (c'est une donnée spécifique à cette division qui fait planter). Par exemple 1.25 ne peut pas être converti avec une réglage en français (c'est 1,25 la notation correcte).

    Il faudrait aller voir de plus près le code de la fonction GetTeamViews pour essayer de trouver les valeurs concernées par une conversion et qui pourraient être à l'origine de ce problème.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    mercredi 10 octobre 2012 15:20
    Modérateur
  • j'ai fouillé tout le dossier "wwwroot" et ses sous-dossiers pour chercher dans les fichiers ".aspx" la fonction GetTeamViews mais j'ai rien trouvé.

    Ou est ce que je peux chercher encore?


    Pour le code c#, comment je peux le voir, parce que je doute que la fonction GetTeamViews est appellé dans le code C# (je sais pas si c'est juste ce que j'ai dit ou non).
    jeudi 11 octobre 2012 08:56
  • Bonjour

    C'est peu probable de trouver quelque chose dans les ficiers .aspx.

    Si vous avez dans le même répertoire des fichiers .cs ou .vb c’est là ou vous devez regarder.

    Mais, aussi, probablement tout ce trouve dans des fichiers .DLL, donc si vous n’avez pas le code de votre site sera très difficile de faire la correction.

    Je pense que dans la BD il y a un nombre qui ASP.NET ne peut le convertir.   Si vous avez accès à la BD, essayez de voir l’info que la page avec des problèmes utilise. Faites attention aux nombres > 1000 (1,000.00 ou 1.000,00).

    Une autre solution, est d’essayer de changer les paramètres régionaux de l’ordinateur (mais faites attention, on peut avoir des problèmes avec d’autres choses qui maintenant  fonctionne correctement). 

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 11 octobre 2012 11:04
  • Le code C# n'est généralement pas déployé sur le serveur (il est compilé sous forme d'une DLL dans le dossier bin). C'est bien qq chose dont votre société possède le code source ? Il faudrait retrouver ce code source, le problème étant sans doute dans le fichier pageconcernée.aspx.cs (ou pageconcernée.aspx.vb)

    Sinon voir plutôt avec le fournisseur de l'application ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 11 octobre 2012 11:13
    Modérateur
  • le problème c'est qu'on dispose pas de code source, le site a été développé par un mec qui ne fait plus partie de la société maintenant, pour l'erreur en question je pense que c'est la page "plantpage.aspx" (et la page plantepage.aspx.cs) et voici le code la page (asp) :

    <%@ Page language="c#" Codebehind="plantpage.aspx.cs" AutoEventWireup="false" Inherits="DataFlow.plantpage" %>
    <%@ Register TagPrefix="ie" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    	<HEAD>
    		<title>Amadeus On The WEB</title>
    		<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    		<meta name="CODE_LANGUAGE" content="C#">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    		<style type="text/css">BODY {
    	OVERFLOW: auto
    }
    .pLanguage {
    	TEXT-ALIGN: left; FONT: bold xx-small Verdana, Arial, sans-serif; COLOR: azure
    }
    .pTitlesmall {
    	FONT: bold xx-small Verdana, Arial, sans-serif
    }
    .pTitle {
    	TEXT-ALIGN: center; FONT-FAMILY: Verdana, Arial, Sans-Serif; FONT-SIZE: x-small
    }
    .lTreeNode {
    	TEXT-ALIGN: left; FONT-FAMILY: Verdana, Arial, Sans-Serif; COLOR: navy; FONT-SIZE: 11pt; FONT-WEIGHT: bold
    }
    A {
    	FONT: xx-small Verdana, Arial, sans-serif; COLOR: red
    }
    A:hover {
    	FONT: xx-small Verdana, Arial, sans-serif; COLOR: green
    }
    .pWelcome {
    	TEXT-ALIGN: center; FONT: bold x-small Verdana, Arial, Sans-Serif; COLOR: #5251a7
    }
    .lButton {
    	TEXT-ALIGN: center; BACKGROUND-COLOR: orangered; WIDTH: 25%; FONT: bold x-small Verdana, Arial, Sans-Serif; HEIGHT: 30px; COLOR: white
    }
    .aButton {
    	TEXT-ALIGN: center; BACKGROUND-COLOR: deeppink; WIDTH: 25%; FONT: bold x-small Verdana, Arial, Sans-Serif; HEIGHT: 30px; COLOR: white
    }
    	.pageLinks { FONT: xx-small Verdana, Arial, sans-serif; COLOR: green }
    		</style>
    	</HEAD>
    	<body leftMargin="5" rightMargin="5" topMargin="0" bgColor="lightgrey" MS_POSITIONING="GridLayout">
    		<form id="Form1" method="post" runat="server">
    			<asp:table id="Table11" BackColor="lightgrey" GridLines="None" BorderStyle="None" BorderColor="white"
    				HorizontalAlign="Center" CellSpacing="0" CellPadding="0" Runat="server" BorderWidth="0"
    				Width="100%">
    				<asp:TableRow Runat="server" VerticalAlign="Middle" HorizontalAlign="Left" BackColor="lightgrey">
    					<asp:TableCell ColumnSpan="3" Wrap="fALSE" VerticalAlign="Middle" CssClass="pWelcome" HorizontalAlign="Left">
    						<asp:Image Visible="True" Runat="server" ImageUrl="images/amadeushz_logo.jpg" id="Image1"></asp:Image>
    						<asp:Label Visible="False" Runat="server" CssClass="pWelcome" ID="lblPlant"></asp:Label>
    					</asp:TableCell>
    				</asp:TableRow>
    				<asp:TableRow>
    					<asp:TableCell HorizontalAlign="Center" ColumnSpan="3">
    					<asp:ImageButton id="ImageEn" runat="server" ImageUrl="images/uk.gif" BackColor="lightgrey" Font-Bold="true"></asp:ImageButton>&nbsp;&nbsp;&nbsp;
    					<asp:ImageButton id="ImageFr" runat="server" BackColor="lightgrey" ImageUrl="images/Fr.gif"></asp:ImageButton>&nbsp;&nbsp;&nbsp;
    					<asp:ImageButton id="ImageDe" runat="server" BackColor="lightgrey" ImageUrl="images/De.gif"></asp:ImageButton>&nbsp;&nbsp;&nbsp;
    					&nbsp;&nbsp;&nbsp;
    <asp:Label ID="lblLanguage" CssClass="pTitlesmall" Visible="False" Runat="server"></asp:Label>
    				</asp:TableCell>
    				</asp:TableRow>
    				<asp:TableRow>
    					<asp:TableCell></asp:TableCell>
    					<asp:TableCell></asp:TableCell>
    				</asp:TableRow>
    				<asp:TableRow VerticalAlign="Middle" HorizontalAlign="Center" BackColor="lightgrey">
    					<asp:TableCell Width="25%" HorizontalAlign="left">
    						<asp:hyperlink id="HLGoBack" Visible="True" Runat="server" Target="_self" NavigateUrl="plantselect.aspx">Plants</asp:hyperlink>
    						&nbsp;&nbsp;
    <asp:label Visible="true" id="LabelUser" runat="server" CssClass="pWelcome">Label</asp:label>
    					
    					</asp:TableCell>
    					<asp:TableCell Width="50%" HorizontalAlign="Center">
    						<asp:label Visible="true" id="lblDataExtract" runat="server" CssClass="pWelcome">Label</asp:label>
    					</asp:TableCell>
    					<asp:TableCell Width="25%" HorizontalAlign="right">
    						<asp:hyperlink id="HLDescr"  Runat="server" Target="_help" NavigateUrl="javascript:history.go(-2)">Description</asp:hyperlink>
    						&nbsp;&nbsp;<asp:label Visible="true" id="Label2" runat="server" CssClass="pWelcome">Label</asp:label>
    					</asp:TableCell>
    				</asp:TableRow>
    				<asp:TableRow>
    					<asp:TableCell ColumnSpan="3">&nbsp;</asp:TableCell>
    				</asp:TableRow>
    				<asp:TableRow>
    					<asp:TableCell ColumnSpan="3" HorizontalAlign="left" BorderWidth="0">
    						<ie:treeview id="TreeView1" HorizontalAlign="left" runat="server" Width="100%" Height="100%"
    							BorderColor="Black" SelectExpands="True" BackColor="lightgrey" EnableViewState="True" DefaultStyle="FONT: x-small Verdana, Arial, sans-serif;"
    							SelectedStyle="filter=none;color:white;background-color:crimson;FONT: x-small Verdana, Arial, sans-serif;"
    							HoverStyle="filter=none;background-color:#003366;"></ie:treeview>
    					</asp:TableCell>
    				</asp:TableRow>
    			</asp:table></form>
    	</body>
    </HTML>
    je suis sure qu'il y un paramètre de la division qui est passé puisque lorsque je change la chaine connexion ca marche pour n'importe quelle autre division, mais j'

    arrive pas à comprendre le code, merci de me dire qu'elle paramètres sont transmis à cette page aspx ou à la limite quelle est la syntaxe de passage de paramètre afin que je puisse chercher dans les autres pages.

    De plus, j'ai à peut près 10 page Aspx, comment je peux savoir la quelle des pages est appellée en premier, celle en deuxième ...

    Merci de vos réponses.


    jeudi 11 octobre 2012 12:44
  • Comme disais Aurel ce fichier ne contient que la façon de "présenter" les données à l'écran. La logique de fonctionnement est dans plantpage.aspx.cs et le problème est même sans doute dans le code de la classe DataFlow.plantpage.

    Vous êtes sûr que votre société ne conserve pas le code source des applications réalisés par ses salariés ou prestataires ?

    Si vous n'avez vraiment pas le source je ne vois gère que d'afficher la page (vous devez voir la page exacte tout simplement dans la barre d'adresse du navigateur) pour une autre division  pour aller voir les infos affichées et essayer d'aller dans la base pour voir les infos concernant la division qui pose problème et trouver éventuellement l'info qui coince.

    Au delaà cela risque d'être difficile d'aller plus loin sans le source (le décompiler etc... mais après il faut aussi reconstituer une application qui pourra être maintenue etc... Bien vérifier que le source n'est pas dispo).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 11 octobre 2012 13:01
    Modérateur
  • Plus de docs, ni de code source, à part quelques diapos pour assister les simples utilisateurs à ajouter un utilisateur ou division :( et ce qui rend encore la tâche plus difficle c'est que j'ai plus de connaissance en ASP, donc j'arrive même pas à comprendre comment le site fonctionne afin que je puisse bien localiser l'erreur.

    je sais bien qu'il y a un paramètre de la division qui est passé au site web et qui est à l'origine cette erreur puisque dés que je change la connexion pourqu'elle pointe vers une autre division tout marche nickel.

    Merci d'avance.

    Cordialement


    jeudi 11 octobre 2012 13:18
  • Oui, cela montre bien que le problème est probablement dans les données qui sont récupérées pour cette division.

    Pour l'instant j'essaierai de faire une trace SQL Server pour voir quelles sont les infos que va récupérer l'application au moment du plantage (idem pour une division qui marche). Vous avez un admin base de données dans votre société ou vous l'êtes vous même ?

    Ensuite je chercherais dans ces données, une différence qui serait donc de la même nature que celle expliquée ci dessus (par exemple du texte qui serait 10 d'une côté, une chaine vide de l'autre ou 1.2 d'un coté, 1,2 de l'autre ou ivnersement etc...) Apparemment c'est du texte que l'on essaie de convertir en nombre ce qui provoque le plantage.

    Ou si cette division a un id, il ne serait pas supérieur à 255 par exemple ? (style on passe un paramètre qui vaut 256, et on essaie de le convertir en octet mais un octet ne peut aller que jusqu'à 255).

    Bon courage.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 11 octobre 2012 13:54
    Modérateur
  • En fait je suis Administrateur de la base du site web qui contient des paramètres : chaine connexion, utilisateurs du site, profils ...

    Mais chaque usine à son administrateur de base de données, si on arrive à faire la trace des valeurs sollicités par l'appli Web au moment du plantage cela serait super, comme ca on pourra bien comparaitre les valeurs transmis par cette division par rapport aux autres divisions.

    Avez-vous une démarche en ce sens? comment faire la traçabilité de ces données?

    Merci d'avance.

    jeudi 11 octobre 2012 14:03
  • C'est avec l'outil SQL Server Profiler : http://msdn.microsoft.com/fr-fr/library/ms181091.aspx ce qui devrait permettre de voir la requête faire dans la base.

    Il reste bien sûr possible que cela vienne de je ne sais quel condition externe... Si par exemple cela a déjà marché pour cette division mais que cela ne fonctionne plus cela indiquerait aussi qu'une donnée a du être changée (ou si c'est une nouvelle division qu'elle a été saisie avec une valeur erronée dès le début en particulier si cela fonctionne pour des divisions créées ultérieurement).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 11 octobre 2012 17:26
    Modérateur
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 12 octobre 2012 09:17
  • Bonjour,

    Merci pour vos réactions cela m'a beaucoup aidé

    Est-ce que quelqu'un pourra m'aider en plus de détail sur la manipulation du SQL Profiler pour tracer les transaction de mon site web.

    En faite, j'ai accès au serveur surlequel est monté le site web, mais j'en ai pas accés au serveur Windows Server de la division en question, j'en peux qu'accéder par SQL server Management Studio.

    Est ce que c'est possible que je puisse manipuler à distance? sinon comment faire pour tracer les transactions (je vais faire l'assistance au responsable de la division)

    Corialement.


    vendredi 12 octobre 2012 09:35
  • Bonjour

      • Démarrez le Profiler. 
      • Introduites les infos de connexion et choisissez Connect.
      • Dans l’onglet Event Selection choisissez « Show All Columns ».
      • Organize Columns – apres selectez DatabaseName  Like « Nom De Votre BD»
      • Run.

    Parce-que probablement il y a plus de monde qui qui utilise l’application préparez votre explorateur, dans le Profiler choisissez Clear Trace Window (Effacer) , charges la page que vous voulez (la page avec l'erreur), et tout de suite après l’erreur selectez toujour dans le Profiler  Pause Selected trace.

    Si vous avez la chance  (pas trop de monde qui utilize la meme BD) dans le profiler vous avez dans la Trace la requête qui donne l’info avec des erreurs.

    Cordialement, 


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 12 octobre 2012 12:03
  • Bonjour,

    J'ai fait le test avec le SQL Profiler, mais j'ai rien remarqué comme anormal, les requêtes lancées renvoient les bonnes données.

    Une nouvelle: j'ai pu avoir le code après un demande que j'ai fait la semaine dernière et j'ai bien le code de la page Plantpage.asp.cs ou est déclanché l'exception de conversion au niveau de la fonction GetTeamVeiws, ci-dessous la partie où la fonction est appellée

    // l'appel de la fonction GetTeamViews
    			if (drarray.Length > 0)
    			{
    				foreach (DataRow myDataRow in drarray)
    				{
    					TreeNode x = new TreeNode();
    					AddParentNew(x,myDataRow[sMainPageParentNodeDescrField].ToString().Trim());
    					GetTeamViews(int.Parse(myDataRow["recid"].ToString()),myDataRow["abbr"].ToString().Trim(),ref nIndex,"file");
    				}
    			}

    ainsi que le code de la fonction:

    // Le code de la fonction 
    		private void GetTeamViews(int nTeam, string sDepartments, ref int nIndex, string sImgType)
    		{
    			// If Department is G (General) then that item is available to everyone 
    			
    			string sTreeUrl = "bommgmt/wiprecords.aspx";
    			string sName = "";
    			string strSQL = "";
    			int nChildIndex = 0;
    			// Only if 'B' SAP Tables, 'C'entral Admin and 'D' MDM on the TRee
    			if ((sDepartments.Length > 0) && (( sDepartments == "D") || ( sDepartments == "B") || ( sDepartments == "C") ))
    			{
    				strSQL = " departments like '%" + sDepartments + "%'" ;
    				DataRow[] drarray = dsNonReportViews.Tables[0].Select(strSQL,"Description");
    				if (drarray.Length > 0)
    				{
    					nChildIndex = 0;
    					string sWindow = "Window"+nIndex.ToString();
    					foreach (DataRow myDataRow in drarray)
    					{
    						int nWin = nTeam + nChildIndex;
    						++nWin;
    						sWindow = "Window"+nWin.ToString(); // make sure it opens in new window
    						sTreeUrl = myDataRow["ASPX_Name"].ToString();
    						sName = myDataRow["Description"].ToString();
    						AddNewChildNonCount(sImgType,nIndex,nChildIndex++,sName,sTreeUrl,sWindow);
    					}
    				}
    				DataRow[] drarray1 = dsTreeViews.Tables[0].Select(strSQL,"Description");
    				if (drarray1.Length > 0)
    				{
    					nChildIndex = 0;
    					string sWindow = "Window"+nIndex.ToString();
    					foreach (DataRow myDataRow in drarray1)
    					{
    						int nWin = nTeam + nChildIndex;
    						++nWin;
    						sWindow = "Window"+nWin.ToString(); // make sure it opens in new window
    						sTreeUrl = myDataRow["ASPX_Name"].ToString();
    						sName = myDataRow["Description"].ToString();
    						AddNewChildNonCount(sImgType,nIndex,nChildIndex++,sName,sTreeUrl,sWindow);
    					}
    				}
    				++nIndex;
    			}
    			else
    			{
    				string sColLang = Session["MAINPAGETREEDESCRFIELD"].ToString().Trim();
    				strSQL = " departments like '%" + sDepartments + "%'" + " or Departments like '%G%'";
    				DataRow[] drarray = dsTreeViews.Tables[0].Select(strSQL," autoreccount desc, recordcount desc");
    				if (ConfigurationSettings.AppSettings["COUNTDISPLAY"] == null)
    				{
    					drarray = dsTreeViews.Tables[0].Select(strSQL,sColLang);
    				}
    				int nMaxRecordcountLength = 0;
    				int i = 0;
    				if (drarray.Length > 0)
    				{
    					nChildIndex = 0;
    					string sWindow = "Window"+nIndex.ToString();
    					string sAutoreccount = "";
    					foreach (DataRow myDataRow in drarray)
    					{
    						if (myDataRow["display"].ToString().Trim() != "Y")
    							continue;
    						int nWin = nTeam + nChildIndex;
    						++nWin;
    						sWindow = "Window"+nWin.ToString(); // make sure it opens in new window
    						sTreeUrl = myDataRow["ASPX_Name"].ToString();
    						sName = myDataRow["Description"].ToString();
    						string sMainPageParentNodeDescrField = Session["MAINPAGETREEDESCRFIELD"].ToString().Trim();
    						sName = myDataRow[sMainPageParentNodeDescrField].ToString();
    						string sCount = myDataRow["recordcount"].ToString().Trim();
    						sAutoreccount = myDataRow["autoreccount"].ToString().Trim();
    						if (sAutoreccount == "N")
    						{
    							if (int.Parse(sCount) > 0)
    							{
    								if (i == 0)
    								{
    									nMaxRecordcountLength = sCount.Length;
    								}
    								sCount = GetCountString(sCount,nMaxRecordcountLength);
    								sName = "(" + sCount + ") " + sName;
    							}
    							else
    							{
    								
    							}
    							AddNewChildNonCount(sImgType,nIndex,nChildIndex++,sName,sTreeUrl,sWindow);
    						}
    						else
    						{
    							string sNoCtChildName = sName;
    							if (int.Parse(sCount) > 0)
    							{
    								if (i == 0)
    								{
    									nMaxRecordcountLength = sCount.Length;
    								}
    								sCount = GetCountString(sCount,nMaxRecordcountLength);
    								sName = "(" + sCount + ") " + sName;
    							}
    							else
    							{
    								sName = "(00000) " + sName;
    							}
    							AddNewChild(sImgType,nIndex,nChildIndex++,sName,sNoCtChildName,sTreeUrl,sWindow,sCount);
    							++i;
    						}
    					}
    				}
    				++nIndex;
    			}
    		}

    Merci de vos réactions.

    lundi 15 octobre 2012 09:17
  • Bonjour

    Sur ce que je vois dans le code, vérifiez les valeurs des variables suivantes:

    string sCount = myDataRow["recordcount"].ToString().Trim();

    et

                    myDataRow["recid"].ToString()

    Je pense qu’un est nul.

    Pour le premier, vous devez  verifier strSQL qui remplit myDataRow.

    Pour corriger vous pouvez ou changer le SQL por qu’il replace null avec  0, ou modifier le code pour faire ça.

    Cordialement ,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 15 octobre 2012 11:12
  • Donc pour moi ce serait sur int.Parse(myDataRow["recid"].ToString()) au niveau de l'appel à GetTeamViews.

    Quel est le type et la valeur de la colonne recid pour cette division ? Si c'est du texte vérifier aussi qu'il n'y aurait pas par exemple un espace après le numéro (qq chose comme "100 " au lieu de "100").

    Dans la fonction cela me semble correcte (on a bien un parse mais d'après le message ce serait plutôt donc l'emplacement ci-dessus). Egalement le code ne devrait plus fonctionner si le nom d'une division contient un caractère ' (mais le message serait différent).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    lundi 15 octobre 2012 11:21
    Modérateur
  • Merci pour vos réponses.

    J'arrive toujours pas à voir l'anomalie, le problème c'est que je sais même pas quel paramètre est passé par l'une de ces deux variables, j'ai essayé de suivre au niveau du coup mais sans aboutir à quelque chose de concret, je vous mets le code entier de cette page :

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using Microsoft.Web.UI.WebControls;
    using System.Xml;
    using System.Data.OleDb;
    using System.Configuration;
    using System.Globalization;
    namespace DataFlow
    {
    	/// <summary>
    	/// Summary description for plantpage.
    	/// </summary>
    	public class plantpage : System.Web.UI.Page
    	{
    		protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
    		DataSet dsTreeNodes = new DataSet();
    		protected DataSet dsViews = new DataSet();
    		protected DataSet dsLines = new DataSet();
    		protected System.Web.UI.WebControls.Label Label2,LabelUser,lblPlant,lblDataExtract,lblLanguage;
    		protected System.Web.UI.WebControls.HyperLink HLGoBack;
    		protected DataSet dsTreeViews = new DataSet();
    		protected DataSet dsNonReportViews = new DataSet();
    		protected System.Web.UI.WebControls.Table Table11;
    		protected System.Web.UI.WebControls.ImageButton ImageUSA;
    		protected System.Web.UI.WebControls.ImageButton ImageFrance;
    		protected System.Web.UI.WebControls.ImageButton ImageGermany;
    		protected System.Web.UI.WebControls.ImageButton ImageItaly;
    		protected System.Web.UI.WebControls.ImageButton ImageSpain,ImagePoland;
    		protected System.Web.UI.WebControls.ImageButton Imageus;
    		protected System.Web.UI.WebControls.ImageButton ImageButton1;
    		
    		string sUserId;
    		DataSet dsLabels = new DataSet();
    		int LBLWELCOME = 19	;
    		int LBLISISEXTRACTEDDATA = 2;
    		int LBLISISCONSISTENCYCOUNT = 20;
    		int LBLPLANTS = 11;
    		int LBLDATAPUMPERROR = 26;
    		protected System.Web.UI.WebControls.HyperLink HLDescr;
    		bool bZquerydate = false;
    	
    		private void Page_Load(object sender, System.EventArgs e)
    		{
    //			buslayer.clsMisc obMisc = new buslayer.clsMisc();    // If Session has timed out message, should be on each page
    			cls.clsSession oSession = new cls.clsSession();
    			if ( !Page.IsPostBack )
    			{
    				GetAllLabels();
    				/*
    				 * AliceBlue,#003366
    				 * 
    				 *  This sample code to open the output in a new window, in case this code gets wiped out in InitializeComponent()
    					this.btnLocal.Attributes.Add("onclick","window.open('exceptionreports.aspx?Type=Local')");
    				    this.btnAmadeus.Attributes.Add("onclick","window.open('exceptionreports.aspx?Type=Amadeus')");
     				 * /
    				 * 
    			this.Load += new System.EventHandler(this.Page_Load);
    			this.btnLocal.Attributes.Add("onclick","window.open('exceptionreports.aspx?Type=Local')");
    			this.btnAmadeus.Attributes.Add("onclick","window.open('exceptionreports.aspx?Type=Amadeus')");
    			this.ImageFrance.Click += new System.Web.UI.ImageClickEventHandler(this.ImageFrance_Click);
    			this.ImageItaly.Click += new System.Web.UI.ImageClickEventHandler(this.ImageItaly_Click);
    			this.ImageGermany.Click += new System.Web.UI.ImageClickEventHandler(this.ImageGermany_Click);
    			this.ImageUSA.Click += new System.Web.UI.ImageClickEventHandler(this.ImageUSA_Click);
    			this.ImageSpain.Click += new System.Web.UI.ImageClickEventHandler(this.ImageSpain_Click);
    /*
    				cur.Session["PLANTADMIN"] = myDataRow["PlantAdmin"].ToString().Trim(); // This variable is changedin the application if the user belongs to Team 4
    				cur.Session["CONAUSER"] = myDataRow["CONAUser"].ToString().Trim(); // This Var. never changes in the application 
    				cur.Session["CONAUSERADMIN"] = myDataRow["CONAUserAdmin"].ToString().Trim();
    */
    				LoadFlowTypes();
    				sUserId = Session["USERID"].ToString().Trim();
    				buslayer.clsMisc oMisc = new buslayer.clsMisc();
    				/*
    				 * 			this.ImageUSA.Click += new System.Web.UI.ImageClickEventHandler(this.ImageButton1_Click);
    		private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    		{
    		
    		}
    				
    				*/
    				//				Response.Write(HttpContext.Current.User.Identity.Name.ToString()); 
    				Label2.Text = " Welcome to North America's Material Flow Application for " +  Session["PlantName"].ToString().Trim();
    				Label2.Text =   Session["PlantName"].ToString().Trim();
    //				Label2.Text =   Label2.Text + "  Language -> " + Session["LanguageDescr"].ToString().Trim();
    				SetLanguageLabel();
    				lblPlant.Text = " Welcome to North America's ISIS Reporting Tool For " ;
    				string sWelcome = GetLabel(LBLWELCOME) + " "; //"Processing Data, Please Wait";
    				HLGoBack.Text = GetLabel(LBLPLANTS);
    				LabelUser.Text = sWelcome + Session["USERFIRSTNAME"].ToString() + " " + Session["USERLASTNAME"].ToString();
    				HLDescr.Visible = false;
    				string sConn = GetDatabaseConnectString();
    //				if (Session["EXTRACTGOOD"] == null)
    				{
    //					Response.Write("Hello" + "test" + "<br>");
    					if (!oMisc.OneUniqueDate(sConn))
    					{
    						lblDataExtract.Text = " Amadeus Related Tables do not have one unique ZQUERYDATE. Please Contact IT Department";
    //						Response.End();
    //						return;
    					}
    				}
    				if (GetZQueryDates())
    				{
    //					if (GetDataPumpDate())
    					{
    						GetLatestCountProcessingDate();
    						BuildPage();
    						HLDescr.Visible = false;
    						HLDescr.Text = "FAQ";
    						string sDest = "admin/faqfrm.aspx";
    						sDest = "javascript:window.open('" + sDest + "','_help','width=700,height=500,top=10,left=500,toolbars=no,scrollbars=no,status=no,resizable=no')";
    						HLDescr.NavigateUrl = sDest;
    						GetFAQInfo();
    					}
    				}
    				SetBackColorImageButtons();
    				// 1.20.10
    //				BuildPage();
    			}
    		}
    		protected void Test()
    		{
    			   //Grab the cookie
    		   HttpCookie cookie = Request.Cookies["language"];
    		   //Check to make sure the cookie exists
    			if (null == cookie) 
    			{
    				Response.Write("Cookie not found. <br><hr>");
    			}
    			else
    			{
    	     //Write the cookie value
    				string strCookieValue = cookie.Value.ToString();
    				Response.Write("The " + " Language " + " cookie contains: <b>" 
                               + strCookieValue + "</b><br><hr>");
    			}
    		}
    		protected void GetFAQInfo()
    		{
    			HLDescr.Visible = false;
    			string strConn = "";
    			DataSet dsIn = new DataSet();
    			buslayer.clsMDM oMDM = new buslayer.clsMDM();
    			if (!oMDM.GetAmadeusDatasourceConnectString(ref strConn))
    			{
    				Response.Write("No Connect String For the Amadeus Database");
    				Response.End();
    			}
    			strConn = "Provider=SQLOLEDB;" + strConn; 
    			string sSQL = "SELECT * FROM lufaq WHERE recid = 1";
    			OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQL, strConn);
    			myCommand.Fill(dsIn);
    			if (dsIn.Tables[0].Rows.Count > 0)
    			{
    				DataRow myDataRow = dsIn.Tables[0].Rows[0];	// pick 1st Row
    				if (myDataRow["faq"].ToString().Trim().Length > 0)
    					HLDescr.Visible = true;
    			}
    			else
    				Response.Write(" No FAQ Data Found " + "<br>");
    	
    		}
    		private void BuildPage()
    		{
    			SetupTreeImages();
    			int nIndex = 0;
    			GetTreeViews();
    			GetNonAmadeusReportRelatedViews();
    			BuildTeamNodes(ref nIndex);
    			TreeView1.ExpandLevel = 0;
    		}
    		private void LoadFlowTypes()
    		{
    			{
    					if (Session["flowtype"] != null)
    					{
    						try
    						{
    							FlowTypeId = int.Parse(Session["flowtype"].ToString());
    							SetFlowTypeIdCookie(false);
    						}
    						catch
    						{
    						}
    					}
    					else
    					{
    						GetFlowTypeIdCookie();
    					}
    					if (FlowTypeId <= -1)
    					{
    						FlowTypeId = 1;
    						SetFlowTypeIdCookie(true);
    					}
    					LoadFlowTypeSessionVariable();
    				}
    		}
    		private void LoadFlowTypeSessionVariable()
    		{
    			if (Session["flowtype"] != null)
    			{
    				Session.Remove("flowtype");
    			}
    			// add session variable.
    			Session.Add("flowtype","1");
    		}
    		private void GetFlowTypeIdCookie()
    		{
    			try
    			{
    				// get the cookie if it's present and then set the printer default.
    				if (Request.Cookies["FlowTypeId"] != null)
    				{
    					System.Web.HttpCookie FlowTypeIdCookie = Request.Cookies["FlowTypeId"];
    					FlowTypeId = int.Parse(FlowTypeIdCookie.Value.ToString());
    				}
    			}
    			catch
    			{
    				FlowTypeId = -1;
    			}
    		}
    		private void GetAllLabels()
    		{
    			string sLabelColumn = Session["LABELLANGUAGE"].ToString().Trim();
    			string sSQLView = " SELECT msgindex, " + sLabelColumn + " as Description FROM vw_ISIS_OnlySystemLabels ";
    			string strConn = "Provider=SQLOLEDB;" + ConfigurationSettings.AppSettings["ConnectionString"];
    			try
    			{
    				OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQLView, strConn);
    				myCommand.SelectCommand.CommandTimeout = 1800; // 30 minutes
    				myCommand.Fill(dsLabels);
    			}
    			catch(Exception ex)
    			{
    				Response.Write(ex.Message);
    				return;
    			}
    			int nTotCount = dsLabels.Tables[0].Rows.Count;
    			if (nTotCount <= 0)
    			{
    				Response.Write("No Data Found");
    				return;
    			}
    		}
    		private string GetLabel(int nSYMBOL)
    		{
    			string strFilter = " msgindex = '" + nSYMBOL + "'";
    			DataRow[] drarray = dsLabels.Tables[0].Select(strFilter);
    			if (drarray.Length > 0)
    			{
    				DataRow myDataRow = drarray[0];
    				return myDataRow["Description"].ToString();
    			}
    			return "Not Available";
    		}
    		private void SetFlowTypeIdCookie(bool readdcookie)
    		{
    			try
    			{
    				if (Request.Cookies["FlowTypeId"] == null ||
    					readdcookie)
    				{
    					if (readdcookie &&
    						Request.Cookies["FlowTypeId"] != null)
    					{
    						Request.Cookies.Remove("FlowTypeId");
    					}
    					string cookievalue = FlowTypeId.ToString();
    					System.Web.HttpCookie defaultCookie = new System.Web.HttpCookie("FlowTypeId",cookievalue);
    					defaultCookie.Expires = DateTime.Today;
    					defaultCookie.Expires = defaultCookie.Expires.AddYears(1);
    					Response.Cookies.Add(defaultCookie);
    				}
    			}
    			catch
    			{
    				FlowTypeId = -1;
    			}
    		}
    		private bool ShouldDisplayTreeNode(int nTeam)
    		{
    			if ( Session["ADMINUSER"].ToString().Trim() == "Y")
    				return true;
    /*
    			if (Session["PID"].ToString().Trim() == "320")  // Solon ???
    			{
    				if ((nTeam == 7) || (nTeam == 8) || (nTeam == 9) || (nTeam == 10) || (nTeam == 5) || (nTeam == 12)) //Show Only data Migration and Statistics
    					return true;
    				return false;
    			}
    */
    			return true;
    		}
    		private string GetWhereString (string sPlantAdmin,string sConaadmin)
    		{
    			string sSessionPlant = Session["Plant"].ToString().Trim();
    			string sUserAccessPlant = Session["USERPLANT"].ToString().Trim();
    			string sOut = "";
    			if ((sPlantAdmin == "Y") && ( sSessionPlant == sUserAccessPlant ))
    				return " WHERE adminpage <> 'X' ";
    //				return sOut;
    			if (sConaadmin == "Y")
    				return sOut;
    			return " WHERE adminpage = 'N' ";
    		}
    		private string GetDatabaseConnectString()
    		{
    			string strConn = "";
    			if (!GetAmadeusDatasourceConnectString(ref strConn))
    			{
    				Response.Write("No Connect String For the Amadeus Database");
    				Response.End();
    			}
    			strConn = "Provider=SQLOLEDB;" + strConn; 
    			return strConn;
    		}
    		private bool GetZQueryDates()
    		{
    			string strConn = "";
    			if (!GetAmadeusDatasourceConnectString(ref strConn))
    			{
    				Response.Write("No Connect String For the Amadeus Database");
    				Response.End();
    			}
    			strConn = "Provider=SQLOLEDB;" + strConn; 
    //			buslayer.clsMisc oMisc = new buslayer.clsMisc();		
    //			oMisc.TruncateAllMDMTables(strConn);
    			DataSet dsDate = new DataSet();
    //			string sSQLView = " SELECT DISTINCT ZQUERYDATE FROM  dtusr.MARA ";
    			string sSQLView = " SELECT DISTINCT ZQUERYDATE FROM  MARA ";
    			try
    			{
    				OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQLView, strConn);
    				myCommand.SelectCommand.CommandTimeout = 1800; // 30 minutes
    				myCommand.Fill(dsDate);
    			}
    			catch(Exception ex)
    			{
    				Response.Write(ex.Message);
    				return false;
    			}
    			int nTotCount = dsDate.Tables[0].Rows.Count;
    			if (nTotCount <= 0)
    			{
    				BuildPage();
    				HLDescr.Visible = false;
    				HLDescr.Text = "FAQ";
    				string sDest = "admin/faqfrm.aspx";
    				sDest = "javascript:window.open('" + sDest + "','_help','width=700,height=500,top=10,left=500,toolbars=no,scrollbars=no,status=no,resizable=no')";
    				HLDescr.NavigateUrl = sDest;
    				GetFAQInfo();
    				lblDataExtract.Text = "Data Is Being Extracted From Amadeus. Please Try Later";
    //				Response.End();
    				return false;
    //				return true;
    			}
    			DataRow[] drarray = dsDate.Tables[0].Select();	
    			if (drarray.Length > 1)
    			{
    				lblDataExtract.Text = GetLabel(LBLDATAPUMPERROR);
    				lblDataExtract.ForeColor = Color.Red;
    				string sPlantadmin = Session["PLANTADMIN"].ToString().Trim();
    				string sConauseradmin = Session["CONAUSERADMIN"].ToString().Trim();
    				if ((sPlantadmin == "Y") || (sConauseradmin == "Y"))
    				{
    					bZquerydate = true;
    					return true;
    				}
    				return false;
    			}
    			else //new 
    			{
    				DataRow myDataRow = drarray[0];
    				string sDate = myDataRow["ZQUERYDATE"].ToString().Trim();
    				DateTime dateTime;
    				dateTime = Convert.ToDateTime(myDataRow["ZQUERYDATE"].ToString()).Date;
    				string strDatapumpdate = dateTime.ToShortDateString();
    				string strDateFormat = ConfigurationSettings.AppSettings["DATEFORMAT"];
    				if (strDateFormat != null)
    				{
    					if (strDateFormat.Length > 0)
    						strDatapumpdate = dateTime.ToString(strDateFormat);
    				}
    				
    				if (!bZquerydate)
    				{
    					string sDataExtract = GetLabel(LBLISISEXTRACTEDDATA); //"Processing Data, Please Wait";
    					lblDataExtract.Text = sDataExtract +  "  "  + strDatapumpdate;
    				}
    			}
    			return true;
    		}
    		private bool GetDataPumpDate()
    		{
    //			DateTimeFormatInfo myDTFI = new CultureInfo( "en-US", false ).DateTimeFormat;
    			string strConn = "";
    			if (!GetAmadeusDatasourceConnectString(ref strConn))
    			{
    				Response.Write("No Connect String For the Amadeus Database");
    				Response.End();
    			}
    			strConn = "Provider=SQLOLEDB;" + strConn; 
    			string strDatapumpdate;
    			DataSet dsDate = new DataSet();
    			string sSQLView = " SELECT * FROM vw_WEB_datapump_date ";
    			try
    			{
    				OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQLView, strConn);
    				myCommand.SelectCommand.CommandTimeout = 1800; // 30 minutes
    				myCommand.Fill(dsDate);
    			}
    			catch(Exception ex)
    			{
    				Response.Write(ex.Message);
    				return false;
    			}
    			int nTotCount = dsDate.Tables[0].Rows.Count;
    			if (nTotCount <= 0)
    			{
    				lblDataExtract.Text = "Data Is Being Extracted From Amadeus. Please Try Later";
    				Response.End();
    				return false;
    			}
    			DataRow[] drarray = dsDate.Tables[0].Select();		// InHouse avail + phasein work center + phaseout work center and IN-House avail > 0
    			if (drarray.Length > 0)
    			{
    				DataRow myDataRow = drarray[0];
    				string sDate = myDataRow["DataPumpDate"].ToString().Trim();
    				if ( myDataRow["DataPumpDate"].ToString().Trim().Length < 1)
    				{
    					lblDataExtract.Text = GetLabel(LBLDATAPUMPERROR);
    					lblDataExtract.ForeColor = Color.Red;
    					BuildPage();
    					return false;
    				}
    				DateTime dateTime;
    				dateTime = Convert.ToDateTime(myDataRow["DataPumpDate"].ToString()).Date;
    				strDatapumpdate = dateTime.ToShortDateString();
    				string strDateFormat = ConfigurationSettings.AppSettings["DATEFORMAT"];
    				if (strDateFormat != null)
    				{
    					if (strDateFormat.Length > 0)
    						strDatapumpdate = dateTime.ToString(strDateFormat);
    				}
    				
    				if (!bZquerydate)
    				{
    					string sDataExtract = GetLabel(LBLISISEXTRACTEDDATA); //"Processing Data, Please Wait";
    					lblDataExtract.Text = sDataExtract +  "  "  + strDatapumpdate;
    				}
    			}
    			return true;
    		}
    		private bool GetDataPumpDateNew(string sDate)
    		{
    			return true;
    		}
    		private bool GetLatestCountProcessingDate()
    		{
    			string strConn = "";
    			buslayer.clsMDM oMDM = new buslayer.clsMDM();
    			if (!oMDM.GetAmadeusDatasourceConnectString(ref strConn))
    			{
    				Response.Write("!!! ERROR !!! No Connect String For the Amadeus Database");
    				Response.End();
    			}
    			strConn = "Provider=SQLOLEDB;" + strConn; 
    			DataSet dsDate = new DataSet();
    			string sSQLView = "SELECT     MIN(lastactiondatetime) AS LastCountDate FROM  luExceptionRptCt WHERE (display = 'Y') AND (autoreccount = 'Y')";
    			try
    			{
    				OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQLView, strConn);
    				myCommand.SelectCommand.CommandTimeout = 1800; // 30 minutes
    				myCommand.Fill(dsDate);
    			}
    			catch(Exception ex)
    			{
    				Response.Write(ex.Message);
    				return false;
    			}
    			int nTotCount = dsDate.Tables[0].Rows.Count;
    			if (nTotCount <= 0)
    			{
    				lblDataExtract.Text = "Data Is Being Extracted From Amadeus. Please Try Later";
    				Response.End();
    				return false;
    			}
    			DataRow[] drarray = dsDate.Tables[0].Select();		// InHouse avail + phasein work center + phaseout work center and IN-House avail > 0
    			if (drarray.Length > 0)
    			{
    				DataRow myDataRow = drarray[0];
    				string sDate = myDataRow["LastCountDate"].ToString().Trim();
    				if ( sDate.Length < 1)
    				{
    					lblDataExtract.Text = GetLabel(LBLDATAPUMPERROR);
    					lblDataExtract.ForeColor = Color.Red;
    					return false;
    				}
    				DateTime dateTime;
    				dateTime = Convert.ToDateTime(myDataRow["LastCountDate"].ToString()).Date;
    				sDate = dateTime.ToShortDateString();
    				string strDateFormat = ConfigurationSettings.AppSettings["DATEFORMAT"];
    				if (strDateFormat != null)
    				{
    					if (strDateFormat.Length > 0)
    						sDate = dateTime.ToString(strDateFormat);
    				}
    				if (!bZquerydate)
    				{
    					string sDataCount = GetLabel(LBLISISCONSISTENCYCOUNT); //"Processing Data, Please Wait";
    					lblDataExtract.Text = lblDataExtract.Text + " : " + sDataCount + " " + sDate;
    				}
    			}
    			return true;
    		}
    		private bool GetAmadeusDatasourceConnectString(ref string strConnectString)
    		{
    			string sPlant = Session["Plant"].ToString().Trim();
    			DataSet dsIn = new DataSet();
    			string strConn = "Provider=SQLOLEDB;" + ConfigurationSettings.AppSettings["ConnectionString"];
    			string sSQLView = " SELECT * FROM tblAdminPlantInfo where plant like '" + sPlant + "'";
    			dsIn.EnforceConstraints = false;  
    			try
    			{
    				OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQLView, strConn);
    				myCommand.SelectCommand.CommandTimeout = 1800; // 30 minutes
    				myCommand.Fill(dsIn);
    			}
    			catch(Exception ex)
    			{
    				Response.Write(ex.Message);
    				return false;
    			}
    			int nTotCount = dsIn.Tables[0].Rows.Count;
    			if (nTotCount <= 0)
    			{
    				//				eventLog1.WriteEntry("No Records Found To Send E-mail");
    				return false;
    			}
    			foreach (DataRow myDataRow in dsIn.Tables[0].Rows)
    			{
    				strConnectString = myDataRow["Amadeusdatasource"].ToString();
    			}
    			return true;
    		}
    		private void BuildTeamNodes(ref int nIndex)
    		{
    			string sPlantadmin = Session["PLANTADMIN"].ToString().Trim();
    			string sConauseradmin = Session["CONAUSERADMIN"].ToString().Trim();
    			DataSet dsMainTree = new DataSet();
    			string strConn = ConfigurationSettings.AppSettings["ConnectionString"];
    			strConn = "Provider=SQLOLEDB;" + strConn;
    			string sSQL = "SELECT * FROM tblAdminMainpageTree ";
    			string sTemp = GetWhereString(sPlantadmin,sConauseradmin); 
    			if (sTemp.Trim().Length > 0)
    			{
    				sSQL += sTemp;	
    				sSQL += " AND display = 'Y' ";
    			}
    			else
    			{
    				sSQL += " where display = 'Y' ";
    			}
    			sSQL += " order by displayorder ";
    //			Response.Write(sSQL + "<br>");
    			OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQL, strConn);
    			myCommand.Fill(dsMainTree);
    			DataRow[] drarray = dsMainTree.Tables[0].Select();
    			string sMainPageParentNodeDescrField = Session["MAINPAGETREEDESCRFIELD"].ToString().Trim();
    			if (drarray.Length > 0)
    			{
    				foreach (DataRow myDataRow in drarray)
    				{
    					TreeNode x = new TreeNode();
    //					AddParentNew(x,myDataRow["description"].ToString().Trim());
    					AddParentNew(x,myDataRow[sMainPageParentNodeDescrField].ToString().Trim());
    					GetTeamViews(int.Parse(myDataRow["recid"].ToString()),myDataRow["abbr"].ToString().Trim(),ref nIndex,"file");
    //					GetTeamViews(int.Parse(myDataRow["recid"].ToString()),myDataRow["departments"].ToString().Trim(),ref nIndex,"file");
    				}
    			}
    		}
    		private void GetTeamViews(int nTeam, string sDepartments, ref int nIndex, string sImgType)
    		{
    			// If Department is G (General) then that item is available to everyone 
    			
    			string sTreeUrl = "bommgmt/wiprecords.aspx";
    			string sName = "";
    			string strSQL = "";
    			int nChildIndex = 0;
    			// Only if 'B' SAP Tables, 'C'entral Admin and 'D' MDM on the TRee
    			if ((sDepartments.Length > 0) && (( sDepartments == "D") || ( sDepartments == "B") || ( sDepartments == "C") ))
    			{
    //				strSQL = " plant like '%" + Session["FirstCharPlant"].ToString() + "%'";
    //				strSQL += " and departments like '%" + sDepartments + "%'" ;
    				strSQL = " departments like '%" + sDepartments + "%'" ;
    				DataRow[] drarray = dsNonReportViews.Tables[0].Select(strSQL,"Description");
    				if (drarray.Length > 0)
    				{
    					nChildIndex = 0;
    					string sWindow = "Window"+nIndex.ToString();
    					foreach (DataRow myDataRow in drarray)
    					{
    						int nWin = nTeam + nChildIndex;
    						++nWin;
    						sWindow = "Window"+nWin.ToString(); // make sure it opens in new window
    						sTreeUrl = myDataRow["ASPX_Name"].ToString();
    						sName = myDataRow["Description"].ToString();
    						AddNewChildNonCount(sImgType,nIndex,nChildIndex++,sName,sTreeUrl,sWindow);
    					}
    				}
    				DataRow[] drarray1 = dsTreeViews.Tables[0].Select(strSQL,"Description");
    //				DataRow[] drarray1 = dsTreeViews.Tables[0].Select(strSQL);
    				if (drarray1.Length > 0)
    				{
    					nChildIndex = 0;
    					string sWindow = "Window"+nIndex.ToString();
    					foreach (DataRow myDataRow in drarray1)
    					{
    						int nWin = nTeam + nChildIndex;
    						++nWin;
    						sWindow = "Window"+nWin.ToString(); // make sure it opens in new window
    						sTreeUrl = myDataRow["ASPX_Name"].ToString();
    						sName = myDataRow["Description"].ToString();
    						AddNewChildNonCount(sImgType,nIndex,nChildIndex++,sName,sTreeUrl,sWindow);
    					}
    				}
    				++nIndex;
    			}
    			else
    			{
    				string sColLang = Session["MAINPAGETREEDESCRFIELD"].ToString().Trim();
    				strSQL = " departments like '%" + sDepartments + "%'" + " or Departments like '%G%'";
    				DataRow[] drarray = dsTreeViews.Tables[0].Select(strSQL," autoreccount desc, recordcount desc");
    				if (ConfigurationSettings.AppSettings["COUNTDISPLAY"] == null)
    				{
    					drarray = dsTreeViews.Tables[0].Select(strSQL,sColLang);
    				}
    				int nMaxRecordcountLength = 0;
    				int i = 0;
    				if (drarray.Length > 0)
    				{
    					nChildIndex = 0;
    					string sWindow = "Window"+nIndex.ToString();
    					string sAutoreccount = "";
    					foreach (DataRow myDataRow in drarray)
    					{
    						if (myDataRow["display"].ToString().Trim() != "Y")
    							continue;
    						int nWin = nTeam + nChildIndex;
    						++nWin;
    						sWindow = "Window"+nWin.ToString(); // make sure it opens in new window
    						sTreeUrl = myDataRow["ASPX_Name"].ToString();
    						sName = myDataRow["Description"].ToString();
    						string sMainPageParentNodeDescrField = Session["MAINPAGETREEDESCRFIELD"].ToString().Trim();
    						sName = myDataRow[sMainPageParentNodeDescrField].ToString();
    						string sCount = myDataRow["recordcount"].ToString().Trim();
    						sAutoreccount = myDataRow["autoreccount"].ToString().Trim();
    						if (sAutoreccount == "N")
    						{
    							if (int.Parse(sCount) > 0)
    							{
    								if (i == 0)
    								{
    									nMaxRecordcountLength = sCount.Length;
    								}
    								sCount = GetCountString(sCount,nMaxRecordcountLength);
    								sName = "(" + sCount + ") " + sName;
    							}
    							else
    							{
    	//							sName = "(00000) " + sName;  //Devang
    								
    							}
    							AddNewChildNonCount(sImgType,nIndex,nChildIndex++,sName,sTreeUrl,sWindow);
    						}
    						else
    						{
    							string sNoCtChildName = sName;
    							if (int.Parse(sCount) > 0)
    							{
    								if (i == 0)
    								{
    									nMaxRecordcountLength = sCount.Length;
    								}
    								sCount = GetCountString(sCount,nMaxRecordcountLength);
    								sName = "(" + sCount + ") " + sName;
    							}
    							else
    							{
    								sName = "(00000) " + sName;
    							}
    							AddNewChild(sImgType,nIndex,nChildIndex++,sName,sNoCtChildName,sTreeUrl,sWindow,sCount);
    							++i;
    						}
    					}
    				}
    				++nIndex;
    			}
    		}
    		private string GetCountString(string sIn, int nMaxLength)
    		{
    			nMaxLength = 5;
    			sIn = sIn.PadLeft(nMaxLength,'0');
    			return sIn;
    		}
    		private void SetLanguageLabel()
    		{
    			Label2.Text =   Session["PlantName"].ToString().Trim() + "  ( Application Language -> " + Session["LanguageDescr"].ToString().Trim() + " )";
    			Label2.Text =   Session["PlantName"].ToString().Trim();
    			lblLanguage.Text = Session["LanguageDescr"].ToString().Trim();
    		}
    		private void GetNonAmadeusReportRelatedViews()
    		{
    			
    			string sSQL = "SELECT * FROM  MenuSubTreeItems where show = 'Y' ORDER BY Parent_Id, Description, OrderOf ";
    //			Response.Write(sSQL);
    			cls.clsMisc oMisc = new cls.clsMisc();
    			string strConn = oMisc.GetDBConnectString();
    			strConn = ConfigurationSettings.AppSettings["ConnectionString"];
    			strConn = "Provider=SQLOLEDB;" + strConn;
    			OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQL, strConn);
    			myCommand.Fill(dsNonReportViews);
    		}
    		private void GetTreeViews()
    		{
    /*
    			string sSQL = "SELECT * FROM  Menu WHERE ((UserNames LIKE '%" +sUserId +"%' OR OtherPlantUserNames LIKE '%" + sUserId +"%')";
    			sSQL += ") ORDER BY Id ";	
    			sSQL = "SELECT * FROM  MenuSubTreeItems where show = 'Y' ORDER BY Parent_Id, OrderOf ";
    //			Response.Write(sSQL);
    			cls.clsMisc oMisc = new cls.clsMisc();
    			string strConn = oMisc.GetDBConnectString();
    			strConn = ConfigurationSettings.AppSettings["ConnectionString"];
    			strConn = "Provider=SQLOLEDB;" + strConn;
    			OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQL, strConn);
    			myCommand.Fill(dsTreeViews);
    */
    	
    			string strConn = "";
    			if (!GetAmadeusDatasourceConnectString(ref strConn))
    			{
    				Response.Write("No Connect String For the Amadeus Database");
    				Response.End();
    			}
    			strConn = "Provider=SQLOLEDB;" + strConn; 
    			DataSet dsDate = new DataSet();
    			string sSQLView = " SELECT * FROM luExceptionRptCt ";
    			try
    			{
    				OleDbDataAdapter myCommand = new OleDbDataAdapter(sSQLView, strConn);
    				myCommand.SelectCommand.CommandTimeout = 1800; // 30 minutes
    				myCommand.Fill(dsTreeViews);
    			}
    			catch(Exception ex)
    			{
    				Response.Write(ex.Message);
    				return ;
    			}
    		}
    		private void SetupTreeImages()
    		{
    			string imgurl = "TreeImages/";
    			TreeNodeType type2 = new TreeNodeType();
    			type2.Type =  "root";
    //			type2.ImageUrl = imgurl + "folder_closed.gif";
    //			type2.ExpandedImageUrl = imgurl + "folder_opened.gif";
    			//			type.SelectedImageUrl = "";
    			TreeView1.TreeNodeTypes.Add( type2 );
    			TreeNodeType type = new TreeNodeType();
    			type.Type =  "folder";
    			type.ImageUrl = imgurl + "folder_closed.gif";
    			type.ExpandedImageUrl = imgurl + "folder_opened.gif";
    			//			type.SelectedImageUrl = "";
    			TreeView1.TreeNodeTypes.Add( type );
    			TreeNodeType type1 = new TreeNodeType();
    			type1.Type = "file";
    //			type1.ImageUrl = imgurl + "rowproperty.gif"; // "checked.gif";
    			TreeView1.TreeNodeTypes.Add( type1 );
    			TreeNodeType type3 = new TreeNodeType();
    			type3.Type = "search";
    			type3.ImageUrl = imgurl + "search.gif";
    			TreeView1.TreeNodeTypes.Add( type3 );
    			TreeNodeType type4 = new TreeNodeType();
    			type4.Type = "save";
    			type4.ImageUrl = imgurl + "save.gif";
    			TreeView1.TreeNodeTypes.Add( type4 );
    			TreeNodeType type5 = new TreeNodeType();
    			type5.Type = "xlsopen";
    			type5.ImageUrl = imgurl + "xlsopen.gif";
    			TreeView1.TreeNodeTypes.Add( type5 );
    			TreeNodeType type6 = new TreeNodeType();
    			type6.Type = "new";
    			type6.ImageUrl = imgurl + "new.gif";
    			TreeView1.TreeNodeTypes.Add( type6 );
    			TreeNodeType type7 = new TreeNodeType();
    			type7.Type = "selectall";
    			type7.ImageUrl = imgurl + "selectall.gif";
    			TreeView1.TreeNodeTypes.Add( type7 );
    		}
    		private void InitImageButtons()
    		{
    			System.Drawing.Color c = System.Drawing.ColorTranslator.FromHtml("lightgrey");  //#003366
    			ImageSpain.BackColor = c;
    			ImageItaly.BackColor = c;
    			ImageFrance.BackColor = c;
    			ImageUSA.BackColor = c;
    			ImageGermany.BackColor = c;
    		}
    		private void SetBackColorImageButtons()
    		{
    			System.Drawing.Color c1 = System.Drawing.ColorTranslator.FromHtml("azure");  //#003366
    			System.Drawing.Color c = System.Drawing.ColorTranslator.FromHtml("lightgrey");  //#003366
    			ImageSpain.BackColor = c;
    			ImageItaly.BackColor = c;
    			ImageFrance.BackColor = c;
    			ImageUSA.BackColor = c;
    			ImageGermany.BackColor = c;
    			ImagePoland.BackColor = c;
    			string sLang = Session["Language"].ToString().Trim();
    			if (sLang == "EN")
    				ImageUSA.BackColor = c1;
    			if (sLang == "FR")
    				ImageFrance.BackColor = c1;
    			if (sLang == "DE")
    				ImageGermany.BackColor = c1;
    			if (sLang == "IT")
    				ImageItaly.BackColor = c1;
    			if (sLang == "ES")
    				ImageSpain.BackColor = c1;
    			if (sLang == "PL")
    			{
    				ImagePoland.BackColor = c1;
    				Session["Language"] = "EN";
    			}
    		}
    		private void AddParentNew(TreeNode x1,string sChildName)
    		{
    			//			background-color:silver; FONT: bold xx-small ; font-family: Verdana, Arial, Helvetica, sans-serif
    			//			string sA = "<FONT size=2 style=COLOR: black; FONT-FAMILY: Verdana, Arial, Sans-Serif;>" + sChildName + "</FONT>";
    			string sA = "<FONT: bold small; COLOR: black; FONT-FAMILY: Verdana, Arial, Sans-Serif;>" + sChildName + "</FONT>";
    			sA = "<class=pTitle>" + sChildName;
    			sA = "<FONT size=2 COLOR: black; FONT-FAMILY: Verdana, Arial, Sans-Serif;>" + sChildName + "</FONT>";
    			sA = "<FONT: xx-small Verdana, Arial, sans-serif;COLOR: red;>" + sChildName;
    			x1.Text = sChildName;
    			x1.DefaultStyle.CssText = "FONT: bold x-small Verdana, Arial, sans-serif;COLOR: #301025"; //#003366
    			x1.Type = "root";
    			TreeView1.Nodes.Add(x1);
    		}
    		private void AddNewChildNonCount(string sType,int nIndex, int nChildIndex, string sChildName, string sChildUrl, string sOpenNewWindow)
    		{
    			TreeNode xx;
    			xx = new TreeNode();
    			string sChild = "<FONT size=2 COLOR: black; FONT-FAMILY: Verdana, Arial, Sans-Serif;>" + sChildName + "</FONT>";
    			xx.Text = sChildName;
    //			xx.DefaultStyle.CssText = "FONT: bold xx-small Verdana, Arial, sans-serif;COLOR: #5251A7"; //navy
    			xx.DefaultStyle.CssText = "FONT: bold xx-small Verdana, Arial, sans-serif;COLOR: mediumblue"; //navy
    			xx.Type = sType; 
    			//								int idx = username.IndexOf("\\");
    			//					if (idx > -1)
    			string sTemp = sChildUrl;
    			sTemp = sTemp.ToUpper();
    			int idx = sTemp.IndexOf("ISISREPORTS.ASPX",0);
    			if (idx > -1)
    			{
    				//				sChildUrl = sChildUrl.Replace(" ","%20");
    				//				sChildUrl = Server.UrlEncode(sChildUrl);
    				//				sChildUrl = sChildUrl.Replace(" ","%20");
    				string sDest = "isisreports.aspx?DB=MDM&view=vw_CONA_MAKT&Descr=Test"; //"isisreports.aspx?DB=DF&view=T2C_RESOURCE_MIGRATION&Descr=RESOURCE MIGRATION";
    				string sDescr = "&Descr1=" + sChildName;
    				sDescr = sChildName;
    				sDest = sChildUrl + sDescr; //sChildName;
    				//				sDest = "common\\isisreports.aspx?DB=MDM&view=vw_WEB_datapump_date&Descr=" + sChildName; //"isisreports.aspx?DB=DF&view=T2C_RESOURCE_MIGRATION&Descr=RESOURCE MIGRATION";
    				sDest = "?Dest=" + sDest;
    				//			sDest = "common/landingpage.aspx" + sDest;
    				sDest = "landingpage.aspx" + sDest;
    				xx.NavigateUrl =  sDest + "&Back=No";
    			}
    			else
    				xx.NavigateUrl = sChildUrl;
    			xx.Target = sOpenNewWindow.Trim();
    			TreeView1.Nodes[nIndex].Nodes.Add(xx);
    		}
    		private void AddNewChild(string sType,int nIndex, int nChildIndex, string sChildName, string sNoCtChildName,string sChildUrl, string sOpenNewWindow, string sRecordCount)
    		{
    			int nCt = int.Parse(sRecordCount.Trim());
    			TreeNode xx;
    			xx = new TreeNode();
    			string sChild = "<FONT size=2 COLOR: black; FONT-FAMILY: Verdana, Arial, Sans-Serif;>" + sChildName + "</FONT>";
    			xx.Text = sChildName;
    			xx.DefaultStyle.CssText = "FONT: bold xx-small Verdana, Arial, sans-serif;COLOR: navy";
    			xx.DefaultStyle.CssText = "FONT: bold xx-small Verdana, Arial, sans-serif;COLOR: green";  //green
    			if ( nCt < 0)
    				xx.DefaultStyle.CssText = "FONT: bold xx-small Verdana, Arial, sans-serif;COLOR: fuchsia";    //red
    			if ( nCt > 0)
    				xx.DefaultStyle.CssText = "FONT: bold xx-small Verdana, Arial, sans-serif;COLOR: #d40000";    //red
    			xx.Type = sType; 
    //								int idx = username.IndexOf("\\");
    //					if (idx > -1)
    			string sTemp = sChildUrl;
    			sTemp = sTemp.ToUpper();
    			int idx = sTemp.IndexOf("ISISREPORTS.ASPX",0);
    			if (idx > -1)
    			{
    //				sChildUrl = sChildUrl.Replace(" ","%20");
    //				sChildUrl = Server.UrlEncode(sChildUrl);
    //				sChildUrl = sChildUrl.Replace(" ","%20");
    				string sDest = "isisreports.aspx?DB=MDM&view=vw_CONA_MAKT&Descr=Test"; //"isisreports.aspx?DB=DF&view=T2C_RESOURCE_MIGRATION&Descr=RESOURCE MIGRATION";
    				string sDescr = "&Descr1=" + sChildName;
    				sDescr = sNoCtChildName;
    				sDest = sChildUrl + sDescr; //sChildName;
    //				sDest = "common\\isisreports.aspx?DB=MDM&view=vw_WEB_datapump_date&Descr=" + sChildName; //"isisreports.aspx?DB=DF&view=T2C_RESOURCE_MIGRATION&Descr=RESOURCE MIGRATION";
    				sDest = "?Dest=" + sDest;
    				//			sDest = "common/landingpage.aspx" + sDest;
    				sDest = "landingpage.aspx" + sDest;
    				xx.NavigateUrl =  sDest + "&Back=No";
    			}
    			else
                    xx.NavigateUrl = sChildUrl;
    			xx.Target = sOpenNewWindow.Trim();
    /*
    			if (sOpenNewWindow.Trim() == "Y")
    			{
    				xx.Target="_blank";
    				xx.Target = "window.open("+ sChildUrl + ",'_blank')";
    			}
    			else
    			{
    //				xx.Target = "window.open("+ sChildUrl + ",'_blank')"; // Open new window
    				xx.Target="New";  // Open in same window but new in addition to the click from existing window
    //				xx.Target="_self";  // Open in same window
    			}
    */
    			TreeView1.Nodes[nIndex].Nodes.Add(xx);
    		}
    		#region Web Form Designer generated code
    		override protected void OnInit(EventArgs e)
    		{
    			//
    			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
    			//
    			InitializeComponent();
    			base.OnInit(e);
    		}
    		
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{
    			this.Load += new System.EventHandler(this.Page_Load);
    			this.ImageFrance.Click += new System.Web.UI.ImageClickEventHandler(this.ImageFrance_Click);
    			this.ImageItaly.Click += new System.Web.UI.ImageClickEventHandler(this.ImageItaly_Click);
    			this.ImageGermany.Click += new System.Web.UI.ImageClickEventHandler(this.ImageGermany_Click);
    			this.ImageUSA.Click += new System.Web.UI.ImageClickEventHandler(this.ImageUSA_Click);
    			this.ImageSpain.Click += new System.Web.UI.ImageClickEventHandler(this.ImageSpain_Click);
    			this.ImagePoland.Click += new System.Web.UI.ImageClickEventHandler(this.ImagePoland_Click);
    		}
    		#endregion
    		#region "Properties"
    		public int FlowTypeId
    		{
    			get
    			{
    				try
    				{
    					return int.Parse(ViewState["flowtypeid"].ToString());
    				}
    				catch
    				{
    					return -1;
    				}
    			}
    			set
    			{
    				ViewState["flowtypeid"] = value;
    			}
    		}
    		private string Authorized
    		{
    			get
    			{
    				if (ViewState["authorized"] != null)
    				{
    					return ViewState["authorized"].ToString();
    				}
    				else
    				{
    					return string.Empty;
    				}
    			}
    			set
    			{
    				ViewState["authorized"] = value;
    			}
    		}
    		// saves the previous sort order value.
    		private string LastSortOrder
    		{
    			get
    			{
    				return ViewState["lastsortorder"].ToString();
    			}
    			set
    			{
    				ViewState["lastsortorder"] = value;
    			}
    		}
    		private DataTable DTFunctionDepartmentUserXref
    		{
    			get
    			{
    				try
    				{
    					return (DataTable)ViewState["dtfunctiondepartmentuserxref"];
    				}
    				catch
    				{
    					return new DataTable("dtfunctiondepartmentuserxref");
    				}
    			}
    			set
    			{
    				ViewState["dtfunctiondepartmentuserxref"] = value;
    			}
    		}
    		protected Control focusctrl;
    		private void ImageUSA_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    		{
    			buslayer.clsMisc obMisc = new buslayer.clsMisc();
    			string sOut = "";
    			obMisc.AddUserActivity("Set Language: English ",Session["PLANT"].ToString().Trim(),ref sOut);
    			Session["Language"] = "EN";
    			Session["LanguageDescr"] = "English";
    			Session["MAINPAGETREEDESCRFIELD"] = "Description";
    			Session["LABELLANGUAGE"] = "EnglishText";
    			Session["LANGDATEFORMATCOLTURE"] = "en-US";
    			InitImageButtons();
    //			ImageUSA.BackColor = Color.AliceBlue;
    			SetLanguageLabel();
    			Server.Transfer("plantpage.aspx");
    		
    		}
    		private void ImageFrance_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    		{
    			/*
    			    //Create a new cookie, passing the name into the constructor
    			HttpCookie cookie = new HttpCookie("language");
    		    //Set the cookies value
    		    cookie.Value = "FR";
    		    //Add the cookie
    		    Response.Cookies.Add(cookie);
    			*/
    			
    			buslayer.clsMisc obMisc = new buslayer.clsMisc();
    			string sOut = "";
    			obMisc.AddUserActivity("Set Language: French ",Session["PLANT"].ToString().Trim(),ref sOut);
    			Session["Language"] = "FR";
    			Session["LanguageDescr"] = "French";
    			Session["MAINPAGETREEDESCRFIELD"] = "French_Description";
    			Session["LABELLANGUAGE"] = "FrenchText";
    			Session["LANGDATEFORMATCOLTURE"] = "fr-FR";
    			InitImageButtons();
    //			ImageFrance.BackColor = Color.Azure;
    			SetLanguageLabel();
    			Server.Transfer("plantpage.aspx");
    	
    		}
    		private void ImageGermany_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    		{
    			buslayer.clsMisc obMisc = new buslayer.clsMisc();
    			string sOut = "";
    			obMisc.AddUserActivity("Set Language: German ",Session["PLANT"].ToString().Trim(),ref sOut);
    			Session["Language"] = "DE";
    			/*
    		    //Create a new cookie, passing the name into the constructor
    			HttpCookie cookie = new HttpCookie("language");
    		    //Set the cookies value
    		    cookie.Value = "DE";
    		    //Add the cookie
    		    Response.Cookies.Add(cookie);
    			*/
    			Session["LanguageDescr"] = "German";
    			Session["MAINPAGETREEDESCRFIELD"] = "German_Description";
    			InitImageButtons();
    //			ImageGermany.BackColor = Color.White;
    			SetLanguageLabel();
    			Session["LABELLANGUAGE"] = "GermanText";
    			Session["LANGDATEFORMATCOLTURE"] = "de-DE";
    			Server.Transfer("plantpage.aspx");
    		
    		}
    		private void ImageItaly_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    		{
    			buslayer.clsMisc obMisc = new buslayer.clsMisc();
    			string sOut = "";
    			obMisc.AddUserActivity("Set Language: Italian ",Session["PLANT"].ToString().Trim(),ref sOut);
    			Session["Language"] = "IT";
    			Session["LanguageDescr"] = "Italian";
    			Session["MAINPAGETREEDESCRFIELD"] = "Italian_Description";
    			InitImageButtons();
    //			ImageItaly.BackColor = Color.White;
    			SetLanguageLabel();
    			Session["LABELLANGUAGE"] = "ItalianText";
    			Session["LANGDATEFORMATCOLTURE"] = "it-IT";
    			/*
    			//Create a new cookie, passing the name into the constructor
    			HttpCookie cookie = new HttpCookie("language");
    			//Set the cookies value
    			cookie.Value = "IT";
    			//Add the cookie
    			Response.Cookies.Add(cookie);
    			*/
    			Server.Transfer("plantpage.aspx");
    		}
    		private void ImageSpain_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    		{
    			buslayer.clsMisc obMisc = new buslayer.clsMisc();
    			string sOut = "";
    			obMisc.AddUserActivity("Set Language: Spanish ",Session["PLANT"].ToString().Trim(),ref sOut);
    			Session["Language"] = "ES";
    			Session["LanguageDescr"] = "Spanish";
    			Session["MAINPAGETREEDESCRFIELD"] = "Spanish_Description";
    			/*
    			//Create a new cookie, passing the name into the constructor
    			HttpCookie cookie = new HttpCookie("language");
    			//Set the cookies value
    			cookie.Value = "ES";
    			//Add the cookie
    			Response.Cookies.Add(cookie);
    			*/
    			InitImageButtons();
    //			ImageSpain.BackColor = Color.White;
    			SetLanguageLabel();
    			Session["LABELLANGUAGE"] = "SpanishText";
    			Session["LANGDATEFORMATCOLTURE"] = "es-ES";
    			Server.Transfer("plantpage.aspx");
    		
    		}
    		private void ImagePoland_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    		{
    //			Response.Write("Under Development ");
    //			return;
    			buslayer.clsMisc obMisc = new buslayer.clsMisc();
    			string sOut = "";
    			obMisc.AddUserActivity("Set Language: Polish ",Session["PLANT"].ToString().Trim(),ref sOut);
    			Session["Language"] = "PL";
    			Session["LanguageDescr"] = "Polish";
    			Session["MAINPAGETREEDESCRFIELD"] = "Polish_Description";
    			Session["LABELLANGUAGE"] = "PolishText";
    			InitImageButtons();
    			//			ImageUSA.BackColor = Color.AliceBlue;
    			SetLanguageLabel();
    			Session["LANGDATEFORMATCOLTURE"] = "pl-PL";
    			/*
    			//Create a new cookie, passing the name into the constructor
    			HttpCookie cookie = new HttpCookie("language");
    			//Set the cookies value
    			cookie.Value = "EN";
    			//Add the cookie
    			Response.Cookies.Add(cookie);
    			*/
    			Server.Transfer("plantpage.aspx");
    		
    		}
    		private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    		{
    		
    		}
    		private Control FocusCtrl
    		{
    			get
    			{
    				return focusctrl;
    			}
    			set
    			{
    				focusctrl = value;
    			}
    		}
    		#endregion
    	}
    }

    Je sais que c'est long et que c'est pénible de voir dedans, mais au moins vous avez les connaissances de ce language, j'ai essayé de voir mais en vain.

    Cordialement.

    lundi 15 octobre 2012 14:11
  • Le problème est que ce code plante pour des données particulières. Donc Aurel ou moi ne pouvons que donner l'emplacement ou nous pensons que cela coince. Pour confirmer et être sur à 100%, il faudrait aller voir les données dans la base.

    Pour moi, le champ concerné serait donc recid dans la table tblAdminMainpageTree. De quel type est-ce champ ? Si c'est du texte bien vérifier que toutes les valeurs de cette colonne peuvent effectivement être converties en nombre car c'est ce qui est fait dans le code ce qui semble bizarre si c'était déjà un nombre dans la base. Je soupçonne donc que c'est stocké dans la base sous forme de texte et que l'un de ces textes est un nombre invalide ce qui fait échouer la conversion. Peut-être :

    SELECT Recid FROM tblAdminMainpageTree WHERE tblAdminMainpageTree LIKE '%[^0-9]%' ce qui devrait donner les lignes pour lesquels on a un caractère autre que 0 à 9 dans recid.

    Si cela donne rien vérifier les longueurs (cela pourrait être que la valeur est trop grande ou trop petite pour tenir dans un entier).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    lundi 15 octobre 2012 17:26
    Modérateur
  • Bonjour

    La même erreur on peut l’obtenir dans le cas ou on essaye de convertir la chaine vide dans un entier.

    String x="";

    Console.WriteLine(Int32.Parse(x));

    C’est pour ça que j’ai indiquée dans mon poste antérieur les deux lignes.

    Donc aussi faites attention aux champs nulls/vides.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 16 octobre 2012 09:39
  • Bonjour,

    Le champ "recid" est un champ Decimal(18,0) qui sert pour numéroter les enregistrement pas plus. j'ai vérifier toutes les valeurs sont correctes de 1 à 15 pas d'espace ni caractère de plus.

    J'ail lancé votre requête et elle ne donne rien comme résultat.

    On plus cette table contient les noms des menus selon les langues, autrement dit elle est sollicité par le site web de la même façon chaque fois qu'un utilisateur se connecte à partir de n'importe quelle division, donc je vois pas pourquoi ça marche bien pour tout les divisions et quelle pète pour une alors qu'on dispose des mêmes inofs pour tous.

    mardi 16 octobre 2012 09:49
  • Y compris le int.Parse(sCount) signalé par Aurel ? Cela vient de la colonne recordcount apparemment retourné par la même table tblAdminMainpageTree. Avez-vous vérifié cette valeur ?

    Quelle est la valeur de recordcount pour la division concernée ? Comme justement cela marche généralement mais que cela coince pour cette division, le problème vient bien d'une particularité de cette division ce qui me fait dire donc que cela vient très probablement d'une de ses données...

    Au fait si vous avez récupéré l'intégralité du code source vous devriez pouvoir faire exécuter le site sous Visual Studio et avec les mêmes données pour essayer de provoquer la même erreur sur votre PC (ce serait sans doute l'approche standard pour un développeur). Dans ce cas vous seriez positionné directement dans VS sur la ligne concernée.

    Cf éventuellement http://www.microsoft.com/visualstudio/fra/downloads#d-2010-express et Visual Web Developper 2010 Express. Au delà, il va être difficile d'aller plus loin sans vous faire aider par un développeur sur site qui pourrait avoir accès aux codes, utiliser peut-être VS, consulter les données de la base etc...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mardi 16 octobre 2012 11:14
    Modérateur
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 17 octobre 2012 07:11
  • Bonjour,

    Nous changeons le type de votre question à « Discussion générale » parce que vous n’êtes pas revenu avec les informations sollicitées. Si vous avez plus de temps pour réexaminer la question et fournir plus d'informations, n'hésitez pas à modifier le type du thread à « Question ». Si le problème est résolu, s’il vous plaît partagez la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires.

    Merci !

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 17 octobre 2012 14:37
  • Bonjour,

    Nous changeons le type de votre question à « Discussion générale » parce que vous n’êtes pas revenu avec les informations sollicitées. Si vous avez plus de temps pour réexaminer la question et fournir plus d'informations, n'hésitez pas à modifier le type du thread à « Question ». Si le problème est résolu, s’il vous plaît partagez la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires.

    Merci !

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 17 octobre 2012 14:37
  • Bonjour à tous,

    Désolé pour le retard de réponse,

    Le problème est en fin résolu :) , c'était une valeur Nulle dans la table luExceptionRptCt, de ce fait le Recordcount retourne un nul ce qui génère l'exception en question.

    Je vous remercie pour votre aide précieuse.

    jeudi 18 octobre 2012 08:00
  • jeudi 18 octobre 2012 08:05