loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 2016
-
1 févr. 2008 à 09:19
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 2016
-
3 févr. 2008 à 18:47
Bonjour,
Voila j'ai une base SqlServer et mon projet sous Visual Studio.net 2003.
Dans ma base : M_IDMAT correspond au numéro des machines
Dans mon projet : NumMachine.
Je souhaiterais faire en sorte que "si NumMachine existe dans M_IDMAT alors on n'insert pas les données correspondant au machine dans la base Sinon on les inserts".
Dans ma phrase ci-dessus ce que je n'arrive pas a effectuer c'est "si NumMachine existe dans M_IDMAT".
L'insertion je sais faire.
Donc je souhaiterais savoir : Comment traduire en langage C#.NET : "si NumMachine existe dans M_IDMAT".
J'ai effectuée quelque chose mais cela ne fonctionnne pas donc j'aimerais savoir ce que vous en pensiez??
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 2 févr. 2008 à 11:30
merci a toi d'avoir voulu m'aider, mais j'ai trouvé une autre façon de faire auquel j'ai bien avancé. Enfin cela fonctionne bof car ça m'enregistre pas les données dans ma base mais bon.
Si ca t'intérresse voici le code :
privatevoid Imprimer_Click(object sender, System.EventArgs e)
{
// DECLARATIONS
string RequeteSQL;
SqlConnection connection;
SqlCommand command;
SqlDataAdapter _MonDataAdapter;
System.Data.DataTable _MaDataTable;
// CONNEXION
connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");
try
{
connection.Open();
// RECUPERER LA LISTE DES MACHINES QUI ONT POUR NUMERO NUMMACHINE.TEXT
RequeteSQL = "SELECT M_IDMAT FROM MACHINE WHERE M_IDMAT='" + NumMachine.Text + "'";
_MonDataAdapter = new SqlDataAdapter(RequeteSQL, connection);
_MaDataTable = new DataTable();
_MonDataAdapter.Fill(_MaDataTable);
// SI IL N'Y EN A PAS
if(_MaDataTable.Rows.Count == 0)
{
command = new SqlCommand("INSERT INTO MACHINE(M_IDMAT, M_NUMCLT, M_NUMCTACT, M_NOMMAT, M_CONFMAT, M_NOMUTIL, M_RAP_RESP, M_RESINTER) VALUES('" + NumMachine.Text + "', '" + NumClt.Text + "', '" + NumContact.Text + "','" + NomMachine.Text + "', '" + ConfigMachine.Text + "', '" + NomUtMachine.Text + "', '" + RespUt.Text + "', '" + RaisonInter.Text + "'", connection);
command.ExecuteNonQuery();
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 1 févr. 2008 à 11:01
voila ce que ca me donne :
code : command =
new SqlCommand ("Select M_IDMAT FROM MACHINE WHERE M_IDMAT'" + NumMachine.Text + "'");Typeretour mIdMat (Typeretour) commandselect .executeScalar();
mais mon problème c'est qu'il me dit les erreurs suivantes :
C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(701): Le nom 'mIdMat' n'existe pas dans la classe ni dans l'espace de noms 'SuiviClient_Distrib_Info.NouvelleIntervention'
C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(700): Le type ou le nom d'espace de noms 'Typeretour' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
comment je peux faire pour résoudre ces problèmes??
Miltiades
Messages postés233Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention25 octobre 2010 1 févr. 2008 à 11:16
...
faut prendre plus de café le matin...
typeretour est bien sur a remplacer par le type de ton champs
string si c'est un Varchar, int si c'est un entier... ca me paraissait pourtant logique...
Nul ne devient grand par la guerre...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Miltiades
Messages postés233Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention25 octobre 2010 1 févr. 2008 à 11:18
ah oui, en passant,
utilise des requetes paramétrées, ca t'eviteras des problemes...
(il y a des exemples de l'utilisation des requetes paramétrées sur ce site...)
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 1 févr. 2008 à 11:23
ben faudrait déja que j'en boive du café!!LOL.
J'avou j'aurais pu le voir mais bon faut croire que je suis pas logique!!
pour un numérique, je met entier je pense??
Mais même si je change Typeretour, ca m'affiche toujours les erreurs suivantes :
C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(700): 'System.Data.SqlClient.SqlCommand' ne contient pas de définition pour 'executeScalar'
C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(701): L'opérateur '==' ne peut pas être appliqué aux opérandes de type 'System.Windows.Forms.TextBox' et 'int'
j'y réfléchi mais si ta une idée, n'hésite pas.
merci d'avance!!
Miltiades
Messages postés233Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention25 octobre 2010 1 févr. 2008 à 14:33
non, ce que je te dis c'est que d'apres ce que je vois numMachine est une textbox
donc si tu veux utilise la valeur renvoyée par cette textbox, tu fais ca:
int valNumMachine = int.tryParse(numMachine.Text);
sachant qu'il te reste a gerer le cas ou l'utilisateur n'a pas remplis numMachine...
Miltiades
Messages postés233Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention25 octobre 2010 1 févr. 2008 à 14:53
je vois ca...
si tu reflechis un peu, cette expression te permet de recupérer au format entier la valeur saisie dans ton textbox (la valeur du textbox n'est pas changée...)
donc tu dois l'utiliser juste avant de t'en servir...
donc avant ton test...
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 3 févr. 2008 à 15:38
Salut,
Et sinon à part ça la suggestion de Miltiades en première page, consistant à utiliser des requêtes paramétrées n'était pas une blague, loin de là.
A moins que les trous de sécurité, les corruptions ou pertes de données soient des fonctionnalités de l'application.