Hallo,
das leidige Thema, ich möchte Daten in Excel importieren. Unter Builder 5.0 hat das auch funktioniert nachdem man den Fehler in utilcls.h behoben hat.
Unter C++ Builder 6.0 funktioniert nichtsmehr.
<PRE>
#include <vcl.h>
#pragma hdrstop
#include "ToolBoxMain.h"
#include "DM.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Excel_2K_SRVR"
#pragma resource "*.dfm"
....
void __fastcall TFormToolbox::Button1Click(TObject *Sender)
{
DM1->QueryLVAbfrage->Close();
DM1->QueryLVAbfrage->Prepare();
DM1->QueryLVAbfrage->ParamByName("ProjektNr")->AsString = EditProjektNr->Text;
DM1->QueryLVAbfrage->Open();
}
//---------------------------------------------------------------------------
void __fastcall TFormToolbox::Button2Click(TObject *Sender)
{
try
{
StatusBar1->SimpleText = "Ich starte Microsoft Excel..." ;
OleVariant oleFalse(False);
try
{
// Starte Excel (oder verbinde mit bestehendem)
ExcelApplication->Connect();
}
catch(Exception& e)
{
Application->MessageBox(e.Message.c_str(),"OLE-Error",MB_ICONERROR);
return;
}
// Mache das Fenster sichtbar
ExcelApplication->Visible[0] = True;
// Erzeuge neue Arbeitsmappe
ExcelApplication->Workbooks->Add();
// Verbinde Komponente mit Tabelle
ExcelWorksheet->ConnectTo(ExcelApplication->ActiveSheet);
// Trage Daten ein
DM1->QueryLVAbfrage->Open();
DM1->QueryLVAbfrage->First();
char cText[20];
unsigned short zeile=1;
while (!DM1->QueryLVAbfrage->Eof)
{
ExcelWorksheet->Cells->set_Item(zeile, 1,
StringToOleStr(DM1->QueryLVAbfrage->Fields->Fields[1]->AsString));
ExcelWorksheet->Cells->set_Item(zeile, 2,
StringToOleStr(DM1->QueryLVAbfrage->Fields->Fields[2]->AsString));
ExcelWorksheet->Cells->set_Item(zeile, 3,
(DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[3]->AsFloat));
//ExcelWorksheet->Cells->set_Item(zeile, 3,
// DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[3]->AsFloat);
ExcelWorksheet->Cells->set_Item(zeile, 4,
StringToOleStr(DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[4]->AsString);
//ExcelWorksheet->Cells->set_Item(zeile, 5,
// DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[5]->AsFloat);
ExcelWorksheet->Cells->set_Item(zeile, 5,
(DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[5]->AsFloat));
DM1->QueryLVAbfrageLVAbfrage->Next();
zeile++;
}
DM1->QueryLVAbfrageLVAbfrage->Close();
// Eigenes Fenster wieder in den Vordergrund
StatusBar1->SimpleText = "Vorgang beendet." ;
Show();
}
catch(Exception& e)
{
Application->MessageBox(e.Message.c_str(),"OLE-Error",MB_ICONERROR);
return;
}
}
Debugger meldet:
[C++ Fehler] ToolBoxMain.cpp(53): E2247 Zugriff auf 'TExcelApplication::Visible' nicht möglich
[C++ Fehler] ToolBoxMain.cpp(66): E2034 Konvertierung von 'unsigned short' nach 'tagVARIANT' nicht möglich
[C++ Fehler] ToolBoxMain.cpp(66): E2342 Keine Übereinstimmung des Typs beim Parameter 'RowIndex' ('tagVARIANT' erwartet, 'unsigned short' erhalten)..
</PRE>
Wo liegt der Fehler?
Alex
das leidige Thema, ich möchte Daten in Excel importieren. Unter Builder 5.0 hat das auch funktioniert nachdem man den Fehler in utilcls.h behoben hat.
Unter C++ Builder 6.0 funktioniert nichtsmehr.
<PRE>
#include <vcl.h>
#pragma hdrstop
#include "ToolBoxMain.h"
#include "DM.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Excel_2K_SRVR"
#pragma resource "*.dfm"
....
void __fastcall TFormToolbox::Button1Click(TObject *Sender)
{
DM1->QueryLVAbfrage->Close();
DM1->QueryLVAbfrage->Prepare();
DM1->QueryLVAbfrage->ParamByName("ProjektNr")->AsString = EditProjektNr->Text;
DM1->QueryLVAbfrage->Open();
}
//---------------------------------------------------------------------------
void __fastcall TFormToolbox::Button2Click(TObject *Sender)
{
try
{
StatusBar1->SimpleText = "Ich starte Microsoft Excel..." ;
OleVariant oleFalse(False);
try
{
// Starte Excel (oder verbinde mit bestehendem)
ExcelApplication->Connect();
}
catch(Exception& e)
{
Application->MessageBox(e.Message.c_str(),"OLE-Error",MB_ICONERROR);
return;
}
// Mache das Fenster sichtbar
ExcelApplication->Visible[0] = True;
// Erzeuge neue Arbeitsmappe
ExcelApplication->Workbooks->Add();
// Verbinde Komponente mit Tabelle
ExcelWorksheet->ConnectTo(ExcelApplication->ActiveSheet);
// Trage Daten ein
DM1->QueryLVAbfrage->Open();
DM1->QueryLVAbfrage->First();
char cText[20];
unsigned short zeile=1;
while (!DM1->QueryLVAbfrage->Eof)
{
ExcelWorksheet->Cells->set_Item(zeile, 1,
StringToOleStr(DM1->QueryLVAbfrage->Fields->Fields[1]->AsString));
ExcelWorksheet->Cells->set_Item(zeile, 2,
StringToOleStr(DM1->QueryLVAbfrage->Fields->Fields[2]->AsString));
ExcelWorksheet->Cells->set_Item(zeile, 3,
(DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[3]->AsFloat));
//ExcelWorksheet->Cells->set_Item(zeile, 3,
// DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[3]->AsFloat);
ExcelWorksheet->Cells->set_Item(zeile, 4,
StringToOleStr(DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[4]->AsString);
//ExcelWorksheet->Cells->set_Item(zeile, 5,
// DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[5]->AsFloat);
ExcelWorksheet->Cells->set_Item(zeile, 5,
(DM1->QueryLVAbfrageLVAbfrage->Fields->Fields[5]->AsFloat));
DM1->QueryLVAbfrageLVAbfrage->Next();
zeile++;
}
DM1->QueryLVAbfrageLVAbfrage->Close();
// Eigenes Fenster wieder in den Vordergrund
StatusBar1->SimpleText = "Vorgang beendet." ;
Show();
}
catch(Exception& e)
{
Application->MessageBox(e.Message.c_str(),"OLE-Error",MB_ICONERROR);
return;
}
}
Debugger meldet:
[C++ Fehler] ToolBoxMain.cpp(53): E2247 Zugriff auf 'TExcelApplication::Visible' nicht möglich
[C++ Fehler] ToolBoxMain.cpp(66): E2034 Konvertierung von 'unsigned short' nach 'tagVARIANT' nicht möglich
[C++ Fehler] ToolBoxMain.cpp(66): E2342 Keine Übereinstimmung des Typs beim Parameter 'RowIndex' ('tagVARIANT' erwartet, 'unsigned short' erhalten)..
</PRE>
Wo liegt der Fehler?
Alex
Comment