Einen AnsiString an Excel übergeben
-
Wie man daten aus einem dbgrid an excel übergibt weiß ich aber ich bekomme es nicht hin, den inhalt einer ansiString variablen in ein excel sheet zu nageln.
es gibt immer probs mit dem typ der variablen "mandantenNummer_Ges "
ich muss das bestimmt zu nem variant casten, aber wie???
Variant strData; int j = 4; while (!Form1->grid_Anz->DataSource->DataSet->Eof) { // Übertrage das Datum////////////////////////////////// //Fields n = 0 = datum;1 = kennziffer, 2 = betrag strData = Form1->grid_Anz->Fields[0]->AsVariant; // j steht für die zeile und 1 für die spalte MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,1). OlePropertySet("Value", strData); ///////////////////////////////////////////////////////// // Übertrage die Kennzahl//////////////////////////////// strData = Form1->grid_Anz->Fields[1]->AsVariant; // j steht für die zeile und 2 für die spalte MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,2). OlePropertySet("Value", strData); ///////////////////////////////////////////////////////// // Übertrage den Betrag////////////////////////////////// strData = Form1->grid_Anz->Fields[2]->AsVariant; // j steht für die zeile und 3 für die spalte MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,3). OlePropertySet("Value", strData); Form1->grid_Anz->DataSource->DataSet->Next(); j++; } //wichtiger teil !!!!!!!!!!!!!!!!!!!!!!!!!// //übertrage Mandantennummer aus Variablen //:mandantenNummer_Ges ==> ist ein AnsiString MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4). OlePropertySet("Value", mandantenNummer_Ges); ///////////////////////////////////////////////////// // führe Makro aus //MyEx.OleFunction("Run", "Personalkostenanalyse");
-
Hallo
es gibt immer probs mit dem typ
Ja und was für Probleme?!
Afk kannst du AnsiString an Variant übergeben. In deinem Fall also
strData = mandantenNummer_Ges; OlePropertySet("Value", strData);
bis bald
akari
-
habe ich probiert!
strData = mandantenNummer_Ges; MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4). OlePropertySet("Value", strData);
Schmiert ab mit: "Falscher Variable Typ!"
-
Probier mal eine der beiden folgenden Varianten
MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4). OlePropertySet("Value", strData.c_str());
oder
MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4). OlePropertySet("Value", Variant(strData));
-
zu1: strData.str() geht nicht bei Variant
zu2: "falscher Variable Typ!"
-
Ich hatte fälschlicherweise angenommen, dass strData vom Typ AnsiString ist. Warum übergibst du nicht direkt mandantenNummer_Ges? Abgesehen davon sollte die Variante von akari problemlos funktionieren. Vielleicht liegt es ja gar nicht an strData.
-
weil das von akari auch nicht geht....ich vermute er hat das problem einen ansiString zu übergeben!
Mache ich das so:
int castedManNGes; castedManNGes = StrToInt(mandantenNummer_Ges); strData = castedManNGes; MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4). OlePropertySet("FormulaR1C1" , strData);
...funktioniert das!!!!
-
so ein mist!
ich kann zwar zahlen übergeben aber keine zeichenketten aus einer variablen.// j steht für die zeile und 1 für die spalte MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,2). OlePropertySet("Value", strData);
will ich in strData(Variant) zeichenketten speichern bekomme ich immer falscher variabletyp zahlenwerte funktionieren aber.
schreibe ich
// j steht für die zeile und 1 für die spalte MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,2). OlePropertySet("Value", "hasse nich gesehen");
geht das auch
ratlos....plz help
-
Wie gesagt, probiers mal so
MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,2).OlePropertySet("Value" , mandantenNummer_Ges.c_str());
Du könntest auch einfach die im Link erwähnte Wrapperklassen verwenden
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39259.html
-
ja so gehts!!!! DANKE Braunstein!
Was ist das für eine Funktion???
Was macht die und warum ist das hier notwendig???
-
Schau doch einfach mal in die Hilfe zu AnsiString.
c_str() gibt einen const char* zurück (Nullterminiert), der den String enthält. Scheinbar erwartet OlePropertySet("Value" , ..); einen derartigen String. Normalerweise steht hier ein Variant und der hat eigentlich einen Konstruktor für AnsiString. Schau doch auch mal in die Bibliothek von AndreasW (siehe obigen Link). Die verwende ich auch. Ich habe sie allerdings noch etwas verändert (debuggt und erweitert). Wenn du willst kann ich sie dir zuschicken oder falls ein Moderator das zulässt in die FAQ mit einfügen.
-
Wenn sie ordentlich kommentiert ist, gerne.
Poste sie ggf. hier, wir werden den FAQ-Eintrag dann entsprechend erweitern.