Précédent   Forum des professionnels en informatique > Dotnet > C# > Windows Forms
Windows Forms Forum d'entraide sur le développement Windows Forms & Applications Windows. Avant de poster -> Articles Windows Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 04/07/2009, 04h11   #1
Membre Confirmé
 
Avatar de agnaou
 
Date d'inscription: février 2009
Localisation: quelque part au monde ou le soleil s'enleve chaque jour souriante
Âge: 24
Messages: 293
Par défaut Requette renvoie null meme avec des données

bonjours a tous
commme indiqué au titre j'ai un morceau de code
Code :
 
 
                Dim d1, d2 As Date
                d1 = Me.date1.Value.ToShortDateString
                d1.ToString()
                MsgBox(d1)
                d2 = Me.date2.Value.ToShortDateString
                d2.ToString()
                MsgBox(d2)
                Dim comm As New OdbcCommand
                comm.Connection = con
                comm.CommandText = "select  devis.code_devis as Code_Devis,devis.date_devis as Date_Devis,devis.tva_devis as Tva_Devis,devis.total_devis As Total_Devis ,client.nom as Nom_Client  " & _
                "from devis ,client where  devis.num_client = client.code_client and devis.date_devis BETWEEN " & Trim(d1) & " and " & Trim(d2) & ""
 
mais il ne renvoie aucune données de ma base sachant que j'ai testé avec des dates existe dans ma base et toujours rien en plus aucune erreur indiqué
et merci d'avance pour vous reonses
agnaou est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/07/2009, 10h56   #2
Expert Confirmé Sénior
 
Avatar de Pol63
 
Date d'inscription: avril 2007
Localisation: 63
Âge: 28
Messages: 5 846
Par défaut

utilises les dbparameters et ta requete devrait fonctionner

concaténer une requete avec des date est une mauvaise idée
si c'est access il faut des # autour de la date, si c'est sql server il faut des '

enfin les dbparemeters s'occupent de tout, meme d'inverser jour et mois car sur certaines bases c'est nécessaire

ce qui donnerait dans ton cas :

Code :
 
Dim comm As New OdbcCommand
comm.Connection = con
comm.CommandText = "select  devis.code_devis as Code_Devis,devis.date_devis as Date_Devis,devis.tva_devis as Tva_Devis,devis.total_devis As Total_Devis ,client.nom as Nom_Client  " & _
                "from devis ,client where  devis.num_client = client.code_client and devis.date_devis BETWEEN @DateDeb and @DateFin"
comm.Parameters.Add("@DateDeb",datetime).value = d1
comm.Parameters.Add("@DateFin",datetime).value = d2
 
@DateDeb est une variable SQL



pour les string, les parameters évitent les soucis des mots qui contiennent un ' et les injections sql d'éventuels pirates
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 04/07/2009, 12h25   #3
Membre Confirmé
 
Avatar de agnaou
 
Date d'inscription: février 2009
Localisation: quelque part au monde ou le soleil s'enleve chaque jour souriante
Âge: 24
Messages: 293
Par défaut

tous d'abord merci pour ta reponse
mr je suis sous access et j'ai suivi votre conseil par ce petit code
Code :
 Dim comm As New OdbcCommand
                comm.Connection = con
                comm.CommandText = "select  devis.code_devis as Code_Devis,devis.date_devis as Date_Devis,devis.tva_devis as Tva_Devis,devis.total_devis As Total_Devis ,client.nom as Nom_Client  " & _
                "from devis ,client where  devis.num_client = client.code_client and devis.date_devis BETWEEN ? and ?  "
                comm.Parameters.AddWithValue("date1", Trim(d1))
                comm.Parameters.AddWithValue("date2", Trim(d1))
 
mais toujours meme probleme(pas d'erreur ,pas du résultat affiché)
et encore une fois merci pour vous reponses
agnaou est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/07/2009, 12h39   #4
Expert Confirmé Sénior
 
Avatar de Pol63
 
Date d'inscription: avril 2007
Localisation: 63
Âge: 28
Messages: 5 846
Par défaut

il ne faut pas transformer la date en string non plus, encore moins les trimer (ou alors t'as mis des date dans ta base sous forme de texte, mais ca serait encore plus aberrant)

pour les parameters ce que vous avez écrit ne correspond pas à la syntaxe que je vous ai proposé
vous ne spécifiez pas le type non plus
et dans votre requete vous avez mis des "?" au lieu des noms des variables


de plus, quelle est la suite du code ? tu as essayer avec un executereader ?

Dernière modification par Pol63 ; 04/07/2009 à 13h24.
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 04/07/2009, 14h01   #5
Membre Confirmé
 
Avatar de agnaou
 
Date d'inscription: février 2009
Localisation: quelque part au monde ou le soleil s'enleve chaque jour souriante
Âge: 24
Messages: 293
Par défaut

encore une fois merci pour ta reponse
j'utilise '?' car je suis sous SGBD Access et pas SQL c'est pour ça qu'avec un grand respect je ne suit pas votre code
j'essai avec exécutereader mais avec
Code :
if dr.read then
msgbox("do something")
end if 
 
il ne rentre jamais dans if meme il me s'affiche au début avec
Code :
 
msgbox(d1)
msgbox(d2)
 
des vrai date.
encore une fois merci
agnaou est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/07/2009, 14h16   #6
Expert Confirmé Sénior
 
Avatar de Pol63
 
Date d'inscription: avril 2007
Localisation: 63
Âge: 28
Messages: 5 846
Par défaut

si tu es sur access, pourquoi utiliser obdc plutot que ole qui prévu pour ? (oledbcommand au lieu de odbccommand)


sinon je viens de regarder dans l'aide des parametres pour oledbcommand (http://msdn.microsoft.com/fr-fr/library/k2xhb8d5.aspx)
et en effet il faut des ? pour les paramètres
plutot étrange, à priori en mettant le nom du champ en paramètre ca remplace le ?
mais dans ta requete, tu as un seul champ pour 2 paramètres, donc je ne vois pas comment ca pourrait etre géré correctement
et puis tu n'as pas spécifier le meme nom ...


sinon je viens de trouver ca aussi
http://aspnet101.com/aspnet101/tutorials.aspx?id=1
qui a l'air d'aller dans mon sens, à savoir mettre des @devant le nom pour en faire des variables SQL, meme pour du access ...
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 04/07/2009, 14h46   #7
Membre Confirmé
 
Avatar de agnaou
 
Date d'inscription: février 2009
Localisation: quelque part au monde ou le soleil s'enleve chaque jour souriante
Âge: 24
Messages: 293
Par défaut

encore une fois un grand merci pour vous réponses
mr j'utilise odbc parceque la base sera installer sur un serveur
donc je veux créer un DSN pour l'accés a des clients - Serveur
j'assaie de modifier les date de ma base (actualiser les dates avec des dates proches entre eux )et ca marche mais il me renvoie seulement la premiere enregistrement
voici le code que j'écrit
Code :
    Dim d1, d2 As Date
                d1 = Me.date1.Value.ToShortDateString
                d2 = Me.date2.Value.ToShortDateString
                Dim comm As New OdbcCommand
                comm.Connection = con
                comm.CommandText = "SELECT Devis.code_devis as Code_Devis, Devis.date_devis as Date_Devis, Devis.tva_devis as Tva_Devis, Devis.total_devis As Total_Devis, client.nom as Nom_Client " & _
                 "FROM client INNER JOIN Devis ON client.code_client = Devis.num_client  WHERE Devis.date_devis  Between ? And ? "
                comm.Parameters.AddWithValue("date1", d1)
                comm.Parameters.AddWithValue("date2", d1)
                Dim adapt As New OdbcDataAdapter
                adapt.SelectCommand = comm
                Dim ds As New DataSet
                adapt.Fill(ds, "devis")
                gd_devis.SetDataBinding(ds, "devis")
 
et merci encore une fois
agnaou est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/07/2009, 15h02   #8
Expert Confirmé Sénior
 
Avatar de Pol63
 
Date d'inscription: avril 2007
Localisation: 63
Âge: 28
Messages: 5 846
Par défaut

je ne vois pas ce qu'apporte de passer par odbc ... m'enfin je ne sais pas tout non plus ...
Pol63 est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 04/07/2009, 16h19   #9
Membre Confirmé
 
Avatar de agnaou
 
Date d'inscription: février 2009
Localisation: quelque part au monde ou le soleil s'enleve chaque jour souriante
Âge: 24
Messages: 293
Par défaut

encore une fois merci
si vous permettez mr intréssant maintenantt seulement pour la requet
je ne sais pourquoi seulement la premiere enregisterement
sachant que je remplit mon data grid
et merci encore une fois
agnaou est déconnecté   Envoyer un message privé Réponse avec citation
NEWS C#FAQ C#TUTORIELS C#SOURCES C#LIVRES C#

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Dotnet > C# > Windows Forms



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 22h35.


Vos questions techniques : forum d'entraide C# - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.