IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual Studio Discussion :

Problème sur un champ


Sujet :

Visual Studio

  1. #41
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Je viens d'essayer de résoudre le problème et j'ai essayé de faire quelques choses mais problème.
    Donc ma requête est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command = new SqlCommand("SELECT MAX(SUBSTRING (IN_NUMINTER, 12,3)), SUBSTRING (IN_NUMINTER, 0,10) FROM INTERVENTION WHERE IN_NUMINTER = '" + DateTime.Today.ToShortDateString() + "GROUP BY IN_NUMINTER" + "'", connection);
    L'erreur affiché est celle situé ci-joint.
    Lorsque j'utilise le débogage il me dit :
    SELECT MAX(SUBSTRING (IN_NUMINTER, 12,3)), SUBSTRING (IN_NUMINTER, 0,10) FROM INTERVENTION WHERE IN_NUMINTER = '" + DateTime.Today.ToShortDateString() + "GROUP BY IN_NUMINTER" + "'" erreur*: l'expression ne peut pas être évaluée à cause d'une erreur de syntaxe
    merci d'avance!!

  2. #42
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut complément a ma dernière réponse
    j'ai trouvé d'ou provient l'erreur mais pour le moment je ne sait pas comment le résoudre.

    En fait, le problème vient du fait que dans ma TextBox s'affiche ce qui ya d'écrit dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumInter.Text = "IN_NUMINSERT";
    plus précisément dans la TextBox on va retrouver "IN_NUMINSERT".

    Comment j'ai su ça?? Ben en fait si on change "IN_NUMINSERT" par "command", la TextBox affiche "command" alors qu'on souhaite avoir le résultat de la requête.

    Donc je pense qu'il manque quelque chose sur cette phrase, mais quoi??

    Si quelqu'un sait??!!
    merci d'avance

  3. #43
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Tu as du mal avec les string
    string a = "toto";
    string b = "titi";
    string c = a + b;
    string d = "a" + "b";
    c vaut "tototiti", et d vaut "ab" tu comprends la différence entre mettre des cotes ("a"+"b") et ne pas en mettre (a+b)?
    Quand tu mets des cotes tu affectes la chaine que tu écris, qd tu mets pas de cotes tu affectes la valeur de la chaine.

    Donc dans ton TextBox.Text c'est pas "NUMINTER" qu'il faut mettre mais (je sais plus l'instruction) reader([NUMINTER])

  4. #44
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumInter.rader([IN_NUMINTER])
    et même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumInter.Text.rader([IN_NUMINTER]);
    mais il me souligne en rouge "[IN_NUMINTER])" et mes erreurs sont les suivantes :
    C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(74): ) attendu
    C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(74): ; attendu

    C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(74): ; attendu

    C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(74): Terme d'expression non valide ')'

    C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(74): Terme d'expression non valide '['

    C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(74): Terme d'expression non valide ']'
    Lorsque je test il m'affiche le message suivant en surlignant en vert "NumInter.Text.rader([IN_NUMINTER]);"

    Je comprend pas pourquoi??
    Quand j'ajoute un espion sur la requête il me dit
    SELECT MAX(SUBSTRING(IN_NUMINTER, 12,3)) FROM INTERVENTION WHERE (SUBSTRING (IN_NUMINTER,0,11)) erreur*: l'expression ne peut pas être évaluée à cause d'une erreur de syntaxe
    Merci d'avance

  5. #45
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Réfléchis un tout petit peu, et regardes ce que tu écris.
    NumInter est un TextBox, et il ne possède pas de propriété qui serait un reader de table ! Tu ne peux donc pas écrire NumInter.rader.
    Que veux-tu faire? Tu veux affecter la valeur lue par le reader dans le text de ton TextBox. Tu dois donc faire
    NumInter.Text = rader([IN_NUMINTER]);

    Pour info quand tu écris un bout de code tu as toujours la complétion (liste des "choses" possibles que tu puisses écrire après ce que tu viens d'écrire). Ou si tu ne l'as pas tu fais ctrl+espace.
    Du coup si ce que tu voulais écrire n'est pas dans la liste tu peux déjà savoir que ça ne va pas compiler. M'étonnerait que rader soit dans la complétion de NumInter.

    Pour ta requête cherche un peu, il te dit qu'il y a une erreur de syntaxe, alors regardes si l'expression que tu as surligné ne manque pas une parenthèse ou autres

  6. #46
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Je viens d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumInter.Text = rader([IN_NUMINTER]);
    mais cela me dit toujours la même chose lorsque j'exécute mon programme.

    Effectivement la requête j'avais oublié de prendre la fin désolé et ça me donne bien la DateDuJour.

    merci d'avance!!

  7. #47
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumInter.Text = Convert.ToString(rader["IN_NUMINTER"]);

  8. #48
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Je vient d'essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumInter.Text = Convert.ToString(rader["IN_NUMINTER"]);
    Ca me marque plus d'erreur mais j'ai toujours le même problème lorsque j'exécute l'application.

    Merci d'avance!! Je vois pas trop d'ou peux provenir le problème!!

  9. #49
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Quelles sont tes erreurs exactement?
    Peux-tu me donner ton code complet aussi

  10. #50
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Lorsque je vérifie si j'ai des erreurs --> j'en ai aucune.

    Ensuite le problème c'est lorsque j'exécute mon programme c'est à dire qu'il me surligne en vert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumInter.Text = Convert.ToString(rader["IN_NUMINTER"]);
    et m'affiche le message d'erreur
    Une exception non gérée du type 'System.IndexOutOfRangeException' s'est produite dans system.data.dll

    Informations supplémentaires*: IN_NUMINTER
    Le code pour ma TextBox est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public NouvelleIntervention()
    		{
    			InitializeComponent();
     
    			SqlConnection connection;
    			SqlCommand command;
    			SqlDataReader rader;
     
    			// Code permettant d'incrémenter la TextBox 
    			// correspondant au Numéro des interventions
    			connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");
    			command = new SqlCommand("SELECT MAX(SUBSTRING(IN_NUMINTER, 12,3)) FROM INTERVENTION WHERE (SUBSTRING (IN_NUMINTER,0,11)) = '" + DateTime.Today.ToShortDateString()+ "'", connection);
    			connection.Open();
    			try
    			{
    				rader = command.ExecuteReader();
    				try
    				{
    					while (rader.Read()) 
    						NumInter.Text = Convert.ToString(rader["IN_NUMINTER"]);
    				}
    				finally
    				{
    					rader.Close();
    				}
    			}
    			finally
    			{
    				connection.Close();
    			}........
    Voila, je pense que je t'ai tout donné.

    Merci d'avance et merci pour ton aide.

  11. #51
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Je pense (mais je suis pas sure) que le problème vient du nom de colonne. Car comme tu fais un SELECT MAX(SUBSTRING(IN_NUMINTER, 12,3)) ta colonne va s'appeler Max quelquechose et ne s'appelle plus IN_NUMINTER, donc du coup ton reader est paumé car tu lui demandes de lire la colonne IN_NUMINTER.
    Modifie ta requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MAX(SUBSTRING(IN_NUMINTER, 12,3)) AS IN_NUMINTER

  12. #52
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Effectivement, je pense que ca peut être du a ça oué.

    Mais après avoir rajouté le "AS IN_NUMINTER" j'ai le problème suivant : lorsque j'exécute mon programme la TextBox est vide.

    Mais je vient de faire un débogage et je me rend compte qu'il y a un problème c'est a dire qu'il remplace bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime.Today.ToShortDateString()
    par la date du jour mais lorsque je le test dans l'analyseur de requête, il m'affiche "NULL" comme résultat.

    En même temps c'est normal vu qu'il n'y a pas d'intervention en ce jour donc comment faire?? car faudrais qu'il affiche la DateDuJour certe mais lors de la première intervention de la journée, faut que cette première intervention soit prise en compte.

  13. #53
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Regarde du côté de la fonction sql ISNULL je crois qu'elle sert à dire : si cette valeur est null tu renvoie X à la place

  14. #54
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Qu'appelle tu "X"??
    Pour comprendre si on pense au même chose!!

    merci d'avance!!

  15. #55
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    En gros tu fais ISNULL(valeur à vérifier, valeur à mettre à la place si valeur à vérifier est NULL)
    Donc dans ton cas ISNULL (date du jour, 001(ou date - 001 je sais plus))

  16. #56
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Ok.

    Je suis d'accord avec toi mais le 001 doit s'incrémenter en fonction du dernier numéro incrémenté.

    C'est plutot : ISNULL (date du jour, date - 001) mais cela ne fonctionne toujorus pas, je me suis surement trompé sur la requête.
    En fait lorsque je fais un déboggage, il m'affiche
    "SELECT MAX(SUBSTRING(IN_NUMINTER, 12,3))AS IN_NUMINTER FROM INTERVENTION WHERE (SUBSTRING (IN_NUMINTER,0,11)) = (ISNULL(DateTime.Today.ToShortDateString(), DateTime.Today.ToShortDateString()" + - + "001))" erreur*: + ne peut pas être appliqué à '"SELECT MAX(SUBSTRING(IN_NUMINTER, 12,3))AS IN_NUMINTER FROM INTERVENTION WHERE (SUBSTRING (IN_NUMINTER,0,11)) = (ISNULL(DateTime.Today.ToShortDateString(), DateTime.Today.ToShortDateString()"' et '-+"001))"'
    Ma requête est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command = new SqlCommand("SELECT MAX(SUBSTRING(IN_NUMINTER, 12,3))AS IN_NUMINTER FROM INTERVENTION WHERE (SUBSTRING (IN_NUMINTER,0,11)) = (ISNULL(DateTime.Today.ToShortDateString(), DateTime.Today.ToShortDateString()" + - + "001))", connection);
    J'ai mal placer mes + j'en suis conscient mais je vois pas comment faire.

    Merci d'avance!!

  17. #57
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Le ISNULL tu dois le faire au niveau du max num : si le max num est null (car date du jour null) alors max num = 001
    SELECT ISNULL(MAX(SUBSTRING(IN_NUMINTER, 12,3)), 001)

  18. #58
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Réponse à LaNat
    Ok.

    Je vient de le mettre mais il m'affiche 1 dans la TextBox et non la DateDuJour-001.

    merci d'avance.

  19. #59
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Tu sais faire ça
    NumInter.Text = Convert.ToString(rader["IN_NUMINTER"]);

    Alors je pense que tu n'as pas besoin de mon aide pour concaténer la date du jour devant !

  20. #60
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à LaNat
    Ok, ben je vais continuer a chercher.... Mais le truc que je comprend pas c'est pourquoi il m'affiche 1 et non 001??

    J'ai essayer pour la concaténation mais ca fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command = new SqlCommand("SELECT ISNULL(MAX(SUBSTRING(IN_NUMINTER, 12,3)),'" + DateTime.Today.ToShortDateString()+ "'" 001)AS IN_NUMINTER FROM INTERVENTION WHERE (SUBSTRING (IN_NUMINTER,0,11)) = '" + DateTime.Today.ToShortDateString()+ "'", connection);
    suis vraiment qu'une merde!!

    Merci d'avance!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème sur un champ multi-ligne
    Par seurjer dans le forum iReport
    Réponses: 6
    Dernier message: 29/11/2012, 16h06
  2. Problème sur un champ SELECT dans une servlet
    Par kcizth dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 13/03/2008, 16h47
  3. Réponses: 1
    Dernier message: 02/03/2008, 22h04
  4. [WD9] problème sur un champ de saisie
    Par loic20h28 dans le forum WinDev
    Réponses: 6
    Dernier message: 25/02/2008, 15h18
  5. Problème sur un champ de type numéro-incrémenté
    Par loic20h28 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2008, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo