Je suis en train de cr=E9er un formulaire de saisie sur une page web aspx=
,=20
il y a une zone de texte et un bouton, afin d'introduire dans une table=20
SQL Server le contenu de la zone de texte et le nom de la page.
Sur une requ=EAte INSERT INTO vers deux champs texte, m'est reproch=E9 de=
ne=20
pas avoir format=E9 une date correctement.
C'est quoi ces blagues ?
Je pr=E9cise que taper la m=EAme requ=EAte dans SQL Management Studio Exp=
ress=20
(en rempla=E7ant les param=E8tres par leurs valeurs entre apostrophes) do=
nne=20
le r=E9sultat attendu sans aucun probl=E8me.
Voici le code du bouton :
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D D=E9but =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
Parameter insertedKey =3D new Parameter("@AdrMail", TypeCode.Char);
insertedKey.Direction =3D ParameterDirection.Output;
insertedKey.DefaultValue =3D "toto";
// ben oui c'est une phase de test, apr=E8s je mettrai TextBox1.Text
SqlDataSource1.InsertParameters.Add(insertedKey);
SqlDataSource1.InsertParameters.Add(insertedKey2);
SqlDataSource1.Insert();
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Fin =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
Dans le code aspx du SqlDataSource :
InsertCommand=3D"INSERT INTO tblListeDist(lsdAdrMail, lsdPageSujet)=20
VALUES(@AdrMail, @PageSujet)">
(en d=E9sespoir de cause j'ai ajout=E9 des apostrophes avant et apr=E8s c=
haque=20
param=E8tre ; bon, mauvaise id=E9e, c'=E9tait juste pour voir)
Taille du champ lsdAdrMail : 80 caract=E8res
Taille du champ lsdPageSujet : 30 caract=E8res
La table comporte des champs date que je pense laisser =E0 nul dans un=20
premier temps.
Et voil=E0 le flot d'injures que je re=E7ois sur l'instruction Insert :
System.FormatException was unhandled by user code
Message=3D"String must be exactly one character long."
Source=3D"mscorlib"
StackTrace:
at System.Convert.ToChar(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToChar(IFormatProvider=20
provider)
at System.Convert.ChangeType(Object value, TypeCode typeCode,=20
IFormatProvider provider)
at System.Web.UI.WebControls.Parameter.GetValue(Object value,=20
String defaultValue, TypeCode type, Boolean convertEmptyStringToNull,=20
Boolean ignoreNullableTypeChanges)
at System.Web.UI.WebControls.Parameter.get_ParameterValue()
at=20
System.Web.UI.WebControls.ParameterCollection.GetValues(HttpContext=20
context, Control control)
at=20
System.Web.UI.WebControls.SqlDataSourceView.InitializeParameters(DbComman=
d=20
command, ParameterCollection parameters, IDictionary exclusionList)
at=20
System.Web.UI.WebControls.SqlDataSourceView.ExecuteInsert(IDictionary=20
values)
at System.Web.UI.WebControls.SqlDataSource.Insert()
at TestData.Button1_Click(Object sender, EventArgs e) in=20
c:\(documents and settings)\Mes documents\Visual Studio=20
2005+\Zailes0\TestData.aspx.cs:line 31
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String=20
eventArgument)
at=20
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.Rais=
ePostBackEvent(String=20
eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler=20
sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection=20
postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean=20
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
A piroir c'est causé TypeCode.Char (un caractère). Remplacer par TypeCode.String...
Merci.
Bon, je ne sais pas si tu as vu, dans le quatrième message du fil, je disais que j'étais arrivé à mes fins (en tout cas sous SQL Server), et que maintenant j'en étais à des questions plus métaphysiques, ou dirons-nous à un niveau plus conceptuel.
Patrice a écrit, le 26/06/2009 12:52 :
A piroir c'est causé TypeCode.Char (un caractère). Remplacer par
TypeCode.String...
Merci.
Bon, je ne sais pas si tu as vu, dans le quatrième message du fil, je
disais que j'étais arrivé à mes fins (en tout cas sous SQL Server), et
que maintenant j'en étais à des questions plus métaphysiques, ou
dirons-nous à un niveau plus conceptuel.
A piroir c'est causé TypeCode.Char (un caractère). Remplacer par TypeCode.String...
Merci.
Bon, je ne sais pas si tu as vu, dans le quatrième message du fil, je disais que j'étais arrivé à mes fins (en tout cas sous SQL Server), et que maintenant j'en étais à des questions plus métaphysiques, ou dirons-nous à un niveau plus conceptuel.
Gloops
Gloops a écrit, le 27/06/2009 03:10 :
Hum, j'ai l'impression qu'il faut que je remette les mains dans le cambouis pour bien capter le message.
Hier je me suis plongé dans l'équivalent sur MySQL, où d'ailleurs je me pose des questions sur la stabilité du pilote questions que j'ai répercutées sur le forum qui va bien.
Ah oui, s'amuser à des hors sujets et ensuite rentrer à des heures pa s possibles, ça donne un cocktail explosif, ça :) C'est le sujet de ce fil, que je cherche à traiter sous MySQL : une saisie toute bête, avec une requête INSERT. Et si on pêche là-des sus, c'est sûr que parler de site dynamique ...
Bon, alors j'ai deux choses à faire, là, maintenant : aller vérifie r si des fois on m'aurait répondu quelque chose sur MySQL, et d'autre part relancer mon projet avec un sous-état. Et si je trouve quelque chose là-dedans, j'ai l'impression que je vais ouvrir un autre fil :)
Alors bon, maintenant une sieste :) et puis ensuite on remet ça.
Jérémy Jeanson a écrit, le 25/06/2009 08:46 :
Bonjour Gloops,
Arg je n'ai pas été forcément très claire...
En fait non je ne parlait pas de requête, mais du résultat d'une requête. Imaginons que tu as un DataSet et que tu l'a déjà charg é dans ton application. Tu peux prendre ce DataSet qui contient des données et le passer à ton report pour qu'il affiche ces données. Cela ce fait comme ceci (petit exemple d'un code que j'utilise souvant avec ASP.net ):
Ah oui, je trouvais que ce code ressemblait à ce que je fais avec l'interface. Bonne occasion pour revenir à la charge, enfin sauf si vraiment je cherche trop la petite bête :
Bibi 20/06 19:24
Voilà. Alors maintenant, il ne reste plus qu'à ne pas mourir idiot. J'aimerais assez comprendre au juste dans quels cas il est approprié de définir par code csharp la requête d'insertion plutôt que d'utiliser celle générée dans le code du contrôle
> (grâce au bouton Advanced), et alors si quelqu'un était capable
de me dire à quel niveau au juste s'est produit le dépassement de capacité ...
Le dépassement de capacité concernait l'appel à une requête INSER T, il semblerait qu'il s'agisse d'une confusion quant aux différents endroits où peut être définie la requête ; il est un peu prématuré que je sois vraiment affirmatif là-dessus, j'ai l'impression qu'une fois vraiment solide je vais devoir me fendre d'une synthèse sur le sujet.
Je crois d'ailleurs qu'il commence à régner une belle pagaille dans c e fil : je me suis lancé sur un sujet où l'interface visuelle semblait ne pas présenter les réactions auxquelles je m'attendais, j'ai trouvé une partie des réponses, je voulais valider si l'écart que j'avais observ é (impossibilité de renseigner la requête INSERT avec l'interface visuelle) était bien un bug ou au contraire quelque chose que j'avais mal compris, ensuite j'ai voulu faire la même chose vers un autre type de base, et dans tout ça je me suis mis à parler d'un autre sujet é voqué précédemment ailleurs, et là-dessus je reprends la conversation à une heure où je suis à moitié réveillé, donc du coup j'ai brouillé les pistes, désolé.
Bon alors l'autre sujet était celui sur lequel j'ai interrompu la citation ici, et sur lequel je me posais donc la question que j'ai reproduite ci-dessus, qu'en définitive je me pose dans les deux contextes : pour la requête INSERT, j'ai l'impression que je vais devoi r redémarrer pour avoir vraiment les idées nettes, donc j'en arriverai peut-être à reposer la même question ; pour le ReportViewer, j'ai t rouvé comme cas où il faut vraiment recourir à du code csharp pour un ReportViewer, plutôt que de fournir les éléments à l'aide de l'in terface visuelle, le cas où le ReportViewer sert à plusieurs états. Y en a- t-il d'autres ?
Je prends note par ailleurs qu'il va me falloir traiter un exemple de ReportViewer avec une liste à la place du DataSet, d'ici là on va dé jà essayer d'épuiser les questions en cours :)
Là où c'est sympathique c'est que le DataSet peut être remplacé par une liste d'objets.
Ah, tiens, il va falloir que je regarde ça de près ...
Gloops a écrit, le 27/06/2009 03:10 :
Hum, j'ai l'impression qu'il faut que je remette les mains dans le
cambouis pour bien capter le message.
Hier je me suis plongé dans l'équivalent sur MySQL, où d'ailleurs je me
pose des questions sur la stabilité du pilote questions que j'ai
répercutées sur le forum qui va bien.
Ah oui, s'amuser à des hors sujets et ensuite rentrer à des heures pa s
possibles, ça donne un cocktail explosif, ça :)
C'est le sujet de ce fil, que je cherche à traiter sous MySQL : une
saisie toute bête, avec une requête INSERT. Et si on pêche là-des sus,
c'est sûr que parler de site dynamique ...
Bon, alors j'ai deux choses à faire, là, maintenant : aller vérifie r si
des fois on m'aurait répondu quelque chose sur MySQL, et d'autre part
relancer mon projet avec un sous-état. Et si je trouve quelque chose
là-dedans, j'ai l'impression que je vais ouvrir un autre fil :)
Alors bon, maintenant une sieste :) et puis ensuite on remet ça.
Jérémy Jeanson a écrit, le 25/06/2009 08:46 :
Bonjour Gloops,
Arg je n'ai pas été forcément très claire...
En fait non je ne parlait pas de requête, mais du résultat d'une
requête. Imaginons que tu as un DataSet et que tu l'a déjà charg é dans
ton application. Tu peux prendre ce DataSet qui contient des données
et le passer à ton report pour qu'il affiche ces données. Cela ce fait
comme ceci (petit exemple d'un code que j'utilise souvant avec ASP.net ):
Ah oui, je trouvais que ce code ressemblait à ce que je fais avec
l'interface. Bonne occasion pour revenir à la charge, enfin sauf si
vraiment je cherche trop la petite bête :
Bibi 20/06 19:24
Voilà. Alors maintenant, il ne reste plus qu'à ne pas mourir idiot.
J'aimerais assez comprendre au juste dans quels cas il est approprié
de définir par code csharp la requête d'insertion plutôt que
d'utiliser celle générée dans le code du contrôle
> (grâce au bouton Advanced), et alors si quelqu'un était capable
de me dire à quel niveau au juste s'est produit le dépassement
de capacité ...
Le dépassement de capacité concernait l'appel à une requête INSER T, il
semblerait qu'il s'agisse d'une confusion quant aux différents endroits
où peut être définie la requête ; il est un peu prématuré que je sois
vraiment affirmatif là-dessus, j'ai l'impression qu'une fois vraiment
solide je vais devoir me fendre d'une synthèse sur le sujet.
Je crois d'ailleurs qu'il commence à régner une belle pagaille dans c e
fil : je me suis lancé sur un sujet où l'interface visuelle semblait ne
pas présenter les réactions auxquelles je m'attendais, j'ai trouvé une
partie des réponses, je voulais valider si l'écart que j'avais observ é
(impossibilité de renseigner la requête INSERT avec l'interface
visuelle) était bien un bug ou au contraire quelque chose que j'avais
mal compris, ensuite j'ai voulu faire la même chose vers un autre type
de base, et dans tout ça je me suis mis à parler d'un autre sujet é voqué
précédemment ailleurs, et là-dessus je reprends la conversation à une
heure où je suis à moitié réveillé, donc du coup j'ai brouillé les
pistes, désolé.
Bon alors l'autre sujet était celui sur lequel j'ai interrompu la
citation ici, et sur lequel je me posais donc la question que j'ai
reproduite ci-dessus, qu'en définitive je me pose dans les deux
contextes : pour la requête INSERT, j'ai l'impression que je vais devoi r
redémarrer pour avoir vraiment les idées nettes, donc j'en arriverai
peut-être à reposer la même question ; pour le ReportViewer, j'ai t rouvé
comme cas où il faut vraiment recourir à du code csharp pour un
ReportViewer, plutôt que de fournir les éléments à l'aide de l'in terface
visuelle, le cas où le ReportViewer sert à plusieurs états. Y en a- t-il
d'autres ?
Je prends note par ailleurs qu'il va me falloir traiter un exemple de
ReportViewer avec une liste à la place du DataSet, d'ici là on va dé jà
essayer d'épuiser les questions en cours :)
Hum, j'ai l'impression qu'il faut que je remette les mains dans le cambouis pour bien capter le message.
Hier je me suis plongé dans l'équivalent sur MySQL, où d'ailleurs je me pose des questions sur la stabilité du pilote questions que j'ai répercutées sur le forum qui va bien.
Ah oui, s'amuser à des hors sujets et ensuite rentrer à des heures pa s possibles, ça donne un cocktail explosif, ça :) C'est le sujet de ce fil, que je cherche à traiter sous MySQL : une saisie toute bête, avec une requête INSERT. Et si on pêche là-des sus, c'est sûr que parler de site dynamique ...
Bon, alors j'ai deux choses à faire, là, maintenant : aller vérifie r si des fois on m'aurait répondu quelque chose sur MySQL, et d'autre part relancer mon projet avec un sous-état. Et si je trouve quelque chose là-dedans, j'ai l'impression que je vais ouvrir un autre fil :)
Alors bon, maintenant une sieste :) et puis ensuite on remet ça.
Jérémy Jeanson a écrit, le 25/06/2009 08:46 :
Bonjour Gloops,
Arg je n'ai pas été forcément très claire...
En fait non je ne parlait pas de requête, mais du résultat d'une requête. Imaginons que tu as un DataSet et que tu l'a déjà charg é dans ton application. Tu peux prendre ce DataSet qui contient des données et le passer à ton report pour qu'il affiche ces données. Cela ce fait comme ceci (petit exemple d'un code que j'utilise souvant avec ASP.net ):
Ah oui, je trouvais que ce code ressemblait à ce que je fais avec l'interface. Bonne occasion pour revenir à la charge, enfin sauf si vraiment je cherche trop la petite bête :
Bibi 20/06 19:24
Voilà. Alors maintenant, il ne reste plus qu'à ne pas mourir idiot. J'aimerais assez comprendre au juste dans quels cas il est approprié de définir par code csharp la requête d'insertion plutôt que d'utiliser celle générée dans le code du contrôle
> (grâce au bouton Advanced), et alors si quelqu'un était capable
de me dire à quel niveau au juste s'est produit le dépassement de capacité ...
Le dépassement de capacité concernait l'appel à une requête INSER T, il semblerait qu'il s'agisse d'une confusion quant aux différents endroits où peut être définie la requête ; il est un peu prématuré que je sois vraiment affirmatif là-dessus, j'ai l'impression qu'une fois vraiment solide je vais devoir me fendre d'une synthèse sur le sujet.
Je crois d'ailleurs qu'il commence à régner une belle pagaille dans c e fil : je me suis lancé sur un sujet où l'interface visuelle semblait ne pas présenter les réactions auxquelles je m'attendais, j'ai trouvé une partie des réponses, je voulais valider si l'écart que j'avais observ é (impossibilité de renseigner la requête INSERT avec l'interface visuelle) était bien un bug ou au contraire quelque chose que j'avais mal compris, ensuite j'ai voulu faire la même chose vers un autre type de base, et dans tout ça je me suis mis à parler d'un autre sujet é voqué précédemment ailleurs, et là-dessus je reprends la conversation à une heure où je suis à moitié réveillé, donc du coup j'ai brouillé les pistes, désolé.
Bon alors l'autre sujet était celui sur lequel j'ai interrompu la citation ici, et sur lequel je me posais donc la question que j'ai reproduite ci-dessus, qu'en définitive je me pose dans les deux contextes : pour la requête INSERT, j'ai l'impression que je vais devoi r redémarrer pour avoir vraiment les idées nettes, donc j'en arriverai peut-être à reposer la même question ; pour le ReportViewer, j'ai t rouvé comme cas où il faut vraiment recourir à du code csharp pour un ReportViewer, plutôt que de fournir les éléments à l'aide de l'in terface visuelle, le cas où le ReportViewer sert à plusieurs états. Y en a- t-il d'autres ?
Je prends note par ailleurs qu'il va me falloir traiter un exemple de ReportViewer avec une liste à la place du DataSet, d'ici là on va dé jà essayer d'épuiser les questions en cours :)
Là où c'est sympathique c'est que le DataSet peut être remplacé par une liste d'objets.
Ah, tiens, il va falloir que je regarde ça de près ...
Jérémy Jeanson
Bonjour Gloops,
ouppppffffffff, ouaouuu!
Y'en a des km, eu en fait je reste sur tes question report :
La proposition que je t'avais présentées correspond à mon usage courant du Report. Il ne s'agit en aucun cas d'une sorte de bonne pratique du report, juste que dans mon cas ça m'est bien plus pratique et que ça fonctionne. L'autre avantage est que je n'ai pas totalement à réapprendre le fonctionnement des accès aux données via les report. Par exemple mon code pourrait fonctionner avec Crystal Report sans tro pde modifications ;)
Et oui je te confirme que cela fonctionne avec des listes d'objets et pas uniquement avec des dataset. Le point important est que les report se bind sur des propriétés, et surtout pas des variable qui serraient indiquées comme public.
En espérant t'avoir été utile. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Bonjour Gloops,
ouppppffffffff, ouaouuu!
Y'en a des km, eu en fait je reste sur tes question report :
La proposition que je t'avais présentées correspond à mon usage courant
du Report. Il ne s'agit en aucun cas d'une sorte de bonne pratique du
report, juste que dans mon cas ça m'est bien plus pratique et que ça
fonctionne. L'autre avantage est que je n'ai pas totalement à
réapprendre le fonctionnement des accès aux données via les report. Par
exemple mon code pourrait fonctionner avec Crystal Report sans tro pde
modifications ;)
Et oui je te confirme que cela fonctionne avec des listes d'objets et
pas uniquement avec des dataset. Le point important est que les report
se bind sur des propriétés, et surtout pas des variable qui serraient
indiquées comme public.
En espérant t'avoir été utile.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Y'en a des km, eu en fait je reste sur tes question report :
La proposition que je t'avais présentées correspond à mon usage courant du Report. Il ne s'agit en aucun cas d'une sorte de bonne pratique du report, juste que dans mon cas ça m'est bien plus pratique et que ça fonctionne. L'autre avantage est que je n'ai pas totalement à réapprendre le fonctionnement des accès aux données via les report. Par exemple mon code pourrait fonctionner avec Crystal Report sans tro pde modifications ;)
Et oui je te confirme que cela fonctionne avec des listes d'objets et pas uniquement avec des dataset. Le point important est que les report se bind sur des propriétés, et surtout pas des variable qui serraient indiquées comme public.
En espérant t'avoir été utile. -- Jérémy JEANSON MCP http://www.jjeanson.fr
Patrice
Bonjour,
C'est pour cela que j'ai répondu à la première question du fil et non pas à une question ultérieure, le reste parlant d'autres choses et sans mentionner clairement ce qui coinçait...
-- Patrice
"Gloops" a écrit dans le message de groupe de discussion :
Patrice a écrit, le 26/06/2009 12:52 :
A piroir c'est causé TypeCode.Char (un caractère). Remplacer par TypeCode.String...
Merci.
Bon, je ne sais pas si tu as vu, dans le quatrième message du fil, je disais que j'étais arrivé à mes fins (en tout cas sous SQL Server), et que maintenant j'en étais à des questions plus métaphysiques, ou dirons-nous à un niveau plus conceptuel.
Bonjour,
C'est pour cela que j'ai répondu à la première question du fil et non pas à
une question ultérieure, le reste parlant d'autres choses et sans mentionner
clairement ce qui coinçait...
--
Patrice
"Gloops" <gloops@invalid.zailes.org> a écrit dans le message de groupe de
discussion : OK4kAUs9JHA.200@TK2MSFTNGP05.phx.gbl...
Patrice a écrit, le 26/06/2009 12:52 :
A piroir c'est causé TypeCode.Char (un caractère). Remplacer par
TypeCode.String...
Merci.
Bon, je ne sais pas si tu as vu, dans le quatrième message du fil, je
disais que j'étais arrivé à mes fins (en tout cas sous SQL Server), et que
maintenant j'en étais à des questions plus métaphysiques, ou dirons-nous à
un niveau plus conceptuel.
C'est pour cela que j'ai répondu à la première question du fil et non pas à une question ultérieure, le reste parlant d'autres choses et sans mentionner clairement ce qui coinçait...
-- Patrice
"Gloops" a écrit dans le message de groupe de discussion :
Patrice a écrit, le 26/06/2009 12:52 :
A piroir c'est causé TypeCode.Char (un caractère). Remplacer par TypeCode.String...
Merci.
Bon, je ne sais pas si tu as vu, dans le quatrième message du fil, je disais que j'étais arrivé à mes fins (en tout cas sous SQL Server), et que maintenant j'en étais à des questions plus métaphysiques, ou dirons-nous à un niveau plus conceptuel.