snoops71
Messages postés2Date d'inscriptionlundi 24 mai 2004StatutMembreDernière intervention19 décembre 2006
-
19 déc. 2006 à 15:10
snoops71
Messages postés2Date d'inscriptionlundi 24 mai 2004StatutMembreDernière intervention19 décembre 2006
-
19 déc. 2006 à 17:00
Bonjour,
J'ai un souci avec une requete UPDATE utilisant ADO (ADOQuery) sur un fichier Excel (moteur Jet)
Je developpe sous C++ Builder mais mes problèmes concernent ADO et de plus, C++ Builder utilisant la VCL et le BDE comme Delphi, je pense obtenir des infos sur ce forum. On trouve malheureusement peu de sites et forums sur C++Builder...
Ma question : est-il possible de mettre à jour (via une requête UPDATE donc) un fichier xls via ADO?
Mon code :
CBTable : ComboBox sélection feuille du fichier Excel
ADOQuery1 précedemment ouvert avec SQL= "SELECT * FROM [" + CBTable->Items->Strings[CBTable->ItemIndex]+ "] "
AnsiString sMessage="UPDATE [" + CBTable->Items->Strings[CBTable->ItemIndex]+ "] SET ["+ ADOQuery1->Fields->Fields[0]->DisplayName +"]=? WHERE ["+ ADOQuery1->Fields->Fields[0]->DisplayName +"]=?";
Résultats:
avec SQL="UPDATE [" + CBTable->Items->Strings[CBTable->ItemIndex]+ "]
SET "+ ADOQuery1->Fields->Fields[0]->DisplayName +"=? WHERE
["+ ADOQuery1->Fields->Fields[0]->DisplayName +"]=?";
-> Message d'erreur : Aucune valeur donnée pour un ou plusieurs paramétres requis.
avec SQL="UPDATE " + CBTable->Items->Strings[CBTable->ItemIndex]+ "]
SET "+ ADOQuery1->Fields->Fields[0]->DisplayName +"=? WHERE
["+ ADOQuery1->Fields->Fields[0]->DisplayName +"]=?";
-> Message d'erreur : Mise entre crochets non valide du nom '[ Agence]" (=ADOQuery1->Fields->Fields[0]->DisplayName)
Je vous épargne mes tentatives avec ADOTable du genre Fields[0 ]->AsString=QuotedStr(NewValue), ADOCommand...mais pas moyen de mettre à jour ces données Excel. Et je n'ai pas du tout envie de réutiliser Ole!
snoops71
Messages postés2Date d'inscriptionlundi 24 mai 2004StatutMembreDernière intervention19 décembre 2006 19 déc. 2006 à 17:00
J'ai fini par trouver ce qui provoquait l'erreur. Le problème venait que dans le fichier Excel le champ s'appelait " Agence" (avec 1 espace avant le nom) ce qui ne plaisait pas du tout à ADO
Voilà le genre d'erreur qui fait perdre du temps, beaucoup de temps...
Pour info : j'ai du virer le QuotedStr pour les valeurs des paramétres pourtant je l'ai vu dans plusieurs sources Delphi. Peut-être du au fait que le délimiteur de chaine est " en C++ et ' en Delphi.