cs_nicolecastel
Messages postés21Date d'inscriptionsamedi 26 février 2011StatutMembreDernière intervention16 mai 2011
-
5 mai 2011 à 16:24
cs_nicolecastel
Messages postés21Date d'inscriptionsamedi 26 février 2011StatutMembreDernière intervention16 mai 2011
-
9 mai 2011 à 13:38
Bonjour
s'il vous plais est ce que vous pouvez me donner le code qui me permet de lire un fichier.wav ("alarme.wav") stocké dans une base de données,j'ai essayé le code suivant:
private void button1_Click(object sender, EventArgs e)
{
// OdbcDataReader dr;
OdbcConnection cn = new OdbcConnection("DSN=cp1");
cn.Open();
OdbcCommand cmd1 = new OdbcCommand("select chemin from Alarme where code alarme=32", cn);
cmd1.Connection = cn;
fileName =cmd1.ToString();
wave = new WaveOut();
wave.DeviceNumber = 0;
playSound(0);
Mais il m'a donné l'erreur suivante :
"Could not find file 'C:\Users\wafa\Documents\Visual Studio 2010\Projects\alarmee\alarmee\bin\Debug\System.Data.Odbc.OdbcCommand'."
A la ligne:
"waveReader = new NAudio.Wave.WaveFileReader(fileName);" de ma fonction "playSound":
public void playSound(int deviceNumber)
{
disposeWave();// stop previous sounds before starting
waveReader = new NAudio.Wave.WaveFileReader(fileName);
var waveOut = new NAudio.Wave.WaveOut();
waveOut.DeviceNumber = deviceNumber;
var output = waveOut;
output.Init(waveReader);
output.Play();
}
cs_nicolecastel
Messages postés21Date d'inscriptionsamedi 26 février 2011StatutMembreDernière intervention16 mai 2011 5 mai 2011 à 17:07
Merci d'avoir répondu,j'ai ajouté cette ligne avant "waveReader = new NAudio.Wave.WaveFileReader(fileName);" mais j'ai toujours le même problème,que dois-je faire?
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 5 mai 2011 à 17:15
Oui je me doute que tu as toujours le problème ^^
Ce que j'aimerai savoir c'est ce que t'affiche la MessageBox.
Connaitre précisément le contenu de la variable filename.
Et sinon as-tu essayé en écrivant le nom de ton fichier en dur, plutôt que d'aller le chercher en BDD ? ça fonctionne ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_nicolecastel
Messages postés21Date d'inscriptionsamedi 26 février 2011StatutMembreDernière intervention16 mai 2011 5 mai 2011 à 17:30
Oui ça fonctionne mais mon projet de fin d'étude consiste à maître les fichiers son dans une base de donnée.
Le message box affiche "System.Data.ODBC.ODBCCommand" puis j'obtient le message d'erreur
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 5 mai 2011 à 17:35
D'accord, donc le problème est bien celui que je pensais :
tu essaies de lire le fichier WAV qui s'appelle System.Data.ODBC.ODBCCommand, y'a comme un souci, non ? ^^
Ah ! et je viens même de voir l'erreur ! Elle est ici :
fileName = cmd1.ToString();
Or cmd1.ToString() te renvoie le type de l'objet.
Il faut exécuter ta requête puis assigner la valeur trouvée à filename . Change cette ligne par :
filename = cmd1.ExecuteScalar().ToString();
Et ça devrait fonctionner.
Pour info ExecuteScalar va executer ta requête (SELECT ...) et renvoyer la valeur de la première colonne de la première ligne du résultat.
cs_nicolecastel
Messages postés21Date d'inscriptionsamedi 26 février 2011StatutMembreDernière intervention16 mai 2011 5 mai 2011 à 20:03
Maintenant j'ai cette erreur "ERROR [42000] [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'code alarme=32'." à la ligne "filename = cmd1.ExecuteScalar().ToString();" :(
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 5 mai 2011 à 21:04
Oui, l'erreur vient de ta requête.
Un nom de champ ne doit pas comporter d'espace, d'où ton souci avec 'code alarme'.
Je ne sais pas comment encapsuler l'expression sous Access, il faut chercher ... ou renommer le champ directement dans ta base de données