OVH Cloud OVH Cloud

Probleme entre Excel & C++ Builder

3 réponses
Avatar
Bidule
Salut,

Je tente avec C++ builder 6 de transférer le résultat d'une requete
quelconque dans une feuille de calcul Excel (j'ai déjà réalisé ça avec
Delphi 6 sans problème). Lorsque j'envoie des valeurs "numériques", le
transfert se passe sans problème par contre dés qu'il s'agit de transferer
du texte, j'obtient le message suivant : "Le projet xxxxxxx a provoqué une
classe d'exception EOleSysError avec le message 'Type de variable
incorrect'. Processus stoppé, etc......".

void __fastcall TFormReq::ToolButton4Click(TObject *Sender)
{
Variant Excel = Variant::CreateObject("Excel.Application");
Excel.OlePropertySet("Visible", true);
Variant WorkBooks = Excel.OlePropertyGet("WorkBooks");
Variant WorkBook = WorkBooks.OleFunction("Add");
Variant WorkSheet = WorkBook.OlePropertyGet("ActiveSheet");

Query->First();
int Ligne = 1;

Variant Cell, Valeur;
while (!(Query->Eof))
{
for (int Colonne = 0; Colonne < Query->FieldCount; Colonne++)
{
Cell = WorkSheet.OlePropertyGet("Cells", Ligne, Colonne+1);
Valeur = Query->Fields->Fields[Colonne]->AsVariant;
Cell.OlePropertySet("Value", Valeur);
}
Ligne++;
Query->Next();
}

Excel = Unassigned;
}

L'un de vous peut il m'aider?

Merci d'avance.

3 réponses

Avatar
Charles Dupuis
Forum C++Builder :
http://www.developpez.net/forums/viewforum.php?f
Avatar
Patrick D
On Wed, 26 Nov 2003 21:37:22 +0100, Bidule
wrote:

Salut,

Je tente avec C++ builder 6 de transférer le résultat d'une requete
quelconque dans une feuille de calcul Excel (j'ai déjà réalisé ça avec
Delphi 6 sans problème). Lorsque j'envoie des valeurs "numériques", le
transfert se passe sans problème par contre dés qu'il s'agit de
transferer
du texte, j'obtient le message suivant : "Le projet xxxxxxx a provoqué
une
classe d'exception EOleSysError avec le message 'Type de variable
incorrect'. Processus stoppé, etc......".

void __fastcall TFormReq::ToolButton4Click(TObject *Sender)
{
Variant Excel = Variant::CreateObject("Excel.Application");
Excel.OlePropertySet("Visible", true);
Variant WorkBooks = Excel.OlePropertyGet("WorkBooks");
Variant WorkBook = WorkBooks.OleFunction("Add");
Variant WorkSheet = WorkBook.OlePropertyGet("ActiveSheet");

Query->First();
int Ligne = 1;

Variant Cell, Valeur;
while (!(Query->Eof))
{
for (int Colonne = 0; Colonne < Query->FieldCount; Colonne++)
{
Cell = WorkSheet.OlePropertyGet("Cells", Ligne, Colonne+1);
Valeur = Query->Fields->Fields[Colonne]->AsVariant;
Cell.OlePropertySet("Value", Valeur);
}
Ligne++;
Query->Next();
}

Excel = Unassigned;
}

L'un de vous peut il m'aider?

Merci d'avance.






enlever le zéro terminal des variables de type chaîne ?
juste une suggestion, parce le C et moi, ça fait un moment qu'on ne s'est
pas fréquenté ...

--
* remove '.don't.spam' and '.invalid' from my eMail address if you want to
write me *
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *
Avatar
Bidule
J'ai résolu le problème.
COM ne supporte pas les AnsiString, Il faut passer les paramètres en
WideString.

Merci quand même.

"Patrick D" <patrickr.dubois.don' a écrit dans le message de
news:
On Wed, 26 Nov 2003 21:37:22 +0100, Bidule
wrote:

> Salut,
>
> Je tente avec C++ builder 6 de transférer le résultat d'une requete
> quelconque dans une feuille de calcul Excel (j'ai déjà réalisé ça avec
> Delphi 6 sans problème). Lorsque j'envoie des valeurs "numériques", le
> transfert se passe sans problème par contre dés qu'il s'agit de
> transferer
> du texte, j'obtient le message suivant : "Le projet xxxxxxx a provoqué
> une
> classe d'exception EOleSysError avec le message 'Type de variable
> incorrect'. Processus stoppé, etc......".
>
> void __fastcall TFormReq::ToolButton4Click(TObject *Sender)
> {
> Variant Excel = Variant::CreateObject("Excel.Application");
> Excel.OlePropertySet("Visible", true);
> Variant WorkBooks = Excel.OlePropertyGet("WorkBooks");
> Variant WorkBook = WorkBooks.OleFunction("Add");
> Variant WorkSheet = WorkBook.OlePropertyGet("ActiveSheet");
>
> Query->First();
> int Ligne = 1;
>
> Variant Cell, Valeur;
> while (!(Query->Eof))
> {
> for (int Colonne = 0; Colonne < Query->FieldCount; Colonne++)
> {
> Cell = WorkSheet.OlePropertyGet("Cells", Ligne, Colonne+1);
> Valeur = Query->Fields->Fields[Colonne]->AsVariant;
> Cell.OlePropertySet("Value", Valeur);
> }
> Ligne++;
> Query->Next();
> }
>
> Excel = Unassigned;
> }
>
> L'un de vous peut il m'aider?
>
> Merci d'avance.
>
>
>

enlever le zéro terminal des variables de type chaîne ?
juste une suggestion, parce le C et moi, ça fait un moment qu'on ne s'est
pas fréquenté ...

--
* remove '.don't.spam' and '.invalid' from my eMail address if you want to
write me *
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *