[c++/COM]excel data naar access db

Pagina: 1
Acties:

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Topicstarter
Hallow,

ik zit met een probleempje.
Ik lees data van een excel sheet uit op de volgende manier en wil dit naar access toe hebben.
C++:
1
2
3
4
5
6
sprintf(row,"A%d",i);
range = sheet.GetRange(COleVariant(row), COleVariant(row));
range = range.GetResize(COleVariant((short)1), COleVariant((short)1));//1X1

COleVariant temp = range.GetValue(COleVariant()); //get data from excel
RS->SetFieldValue(_T("Source language"),temp);//set data to access


Nou krijg ik de hele tijd alleen de eerste letter in de tabel.
Volgens mij moet de waarde van temp als formaat VT_BSTRT(Ansi) krijgen, maar
het heeft nu VT_BSTR(Uni)
En dat omzetten lukt eigenlijk niet zo erg, als ik dat wil.
Als iemand een ideetje heeft, graag...

[ Voor 8% gewijzigd door koli-man op 11-02-2004 15:27 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Kun je iets doen met COleVariant::SetString doen ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Topicstarter
Heb ik al geprobeerd.
Maar dat werkt niet. Ik krijg hem niet goed omgezet en simpelweg casten lukt niet.
Als ik zoiets doe
C++:
1
COleVariant bla(_T("blablabla"),VT_BSTRT); 

en dan in een mdb zet, dan zet hij de hele string erin.
Doe ik dit
C++:
1
COleVariant bla(_T("blablabla")); 

Krijg ik de eerste letter en hetzelfde als de getvalue van een excel - cel
Ik krijg er de krieltjespies van :p

[ Voor 3% gewijzigd door koli-man op 11-02-2004 20:47 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Of COleVariant::ChangeType ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Topicstarter
Dat heb ik ook geprobeerd, maar het lijkt net als, zodra ik de functie getValue van een cel aanroep en dat naar een ander excel - cel kopieer, blijft de waarde goed.
Maar als ik dezelfde waarde naar een access-veld schrijf dan krijg ik alleen de eerste letter.
Vind het heel raar.

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Topicstarter
Tja, ik heb het nu op deze manier gedaan. Het is er allemaal niet mooier op geworden, maar ja. Het doel heiligt misschien de middelen zullen we zeggen. >:)
C++:
1
RS->SetFieldValue(_T("Source language"),GetString(range.GetValue2()));

en die getstring is dan
C++:
1
2
3
4
5
6
7
8
inline char* Cmdbtoxls::GetString(const COleVariant& _olevar){
    CString strResult;
    char* returndata=new char[255];

    strResult = _olevar.bstrVal;
    sprintf(returndata,"%s",strResult);
    return returndata;
}

[ Voor 7% gewijzigd door koli-man op 13-02-2004 15:27 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Topicstarter
[ter info]
Deze laatste oplossing heb ik inderdaad gebruikt en werkt in principe goed en toch nog vrij vlot, maar ik heb in de TS niet erbij gezet dat ik EXCEL XP gebruik en de database wat er gebruikt wordt is een Access 97 database.
Aan deze Access 97 database ben ik gebonden, maar heb helaas niet de mogelijkheid om te testen met een andere excel versie.

Het zou dan inderdaad mogelijk zijn dat er hier iets verkeerd gaat, maar dit kan ik niet testen dus.
[/ter info]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
koli-man schreef op 12 februari 2004 @ 15:29:
C++:
1
RS->SetFieldValue(_T("Source language"),GetString(range.GetValue2()));

en die getstring is dan
C++:
1
2
3
4
5
6
7
8
inline char* Cmdbtoxls::GetString(const COleVariant& _olevar){
    CString strResult;
    char* returndata="";

    strResult = _olevar.bstrVal;
    sprintf(returndata,"%s",strResult);
    return returndata;
}
Moet jij geen buffer alloceren voor die returndata ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Topicstarter
Ja! :X
heb stiekum in een vorige post aangepast

[ Voor 78% gewijzigd door koli-man op 13-02-2004 15:30 ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff

Pagina: 1