Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Odbcexceldaten in Array schreiben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
09.04.2003, 18:00 Uhr
~spunky2
Gast


Hallo,

ich möchte gern Daten meiner ODBCExcelDatei in ein Array schreiben.
Wenn das nicht geht, mein RecordSet in eine temporäre Datei schreiben.
Wie könnte das gehen?

Bitte helft mir!
Danke.

Grüsse
spunky2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.04.2003, 18:25 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Hab ich leider noch nie gemacht, aber die könntest ja in einer Schleife alle Recordsets durchlaufen (bis EOF) und die dann in eine Datei anhängen.

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.04.2003, 18:33 Uhr
~spunky2
Gast


Danke erstmal für die Antwort.

Das mit der Schleife ist eine gute Idee.
Ich bin noch c++ Anfänger. Könntest Du mir mal einen Tipp geben, wie ich das realisiere?

Mein RecordSet sieht ungefähr so aus:

test1 test2 test3 test4 test5 test6 test7 test8 test9 test10
... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ...
usw.

Ist die Ansicht meiner ExcelTabelle.
Wie bekomme ich jetzt die Daten ohne meine Spaltenüberschriften(test1 test2...) in ein File geschrieben?

Danke.

Grüsse
spunky2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.04.2003, 19:17 Uhr
mike
Pinguinhüpfer
(Operator)


Probier mal folgendes:
Angenommen die Verwendest CRecordSet:

C++:
if( rsCustSet.IsBOF( ) )
    return;
    // Kein Recordset vorhanden
//File erzeugen
HANDLE hFile = CreateFile(_T("C:\\Temp\\DB.DAT"),
         GENERIC_WRITE, FILE_SHARE_READ,
         NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

   if (hFile == INVALID_HANDLE_VALUE)
      AfxMessageBox(_T("Datei konnte nicht erzeugt werden!"));
   else
   {
       while ( !rsCustSet.IsEOF( )) {
           rsCustSet.MoveNext( );
           //Daten auslesen
           //Bsp:
           CFile file(hFile);
           static const TCHAR sz[] = _T(rsCustSet.m_sAddress);
           file.SeekToEnd();
           file.Write(sz, lstrlen(sz));
           file.Close();
        }
    }



Hab leider auf die schnelle keine Datenbank zur Hand gehabt - also der Code ist 100%ig ungetestet
Hab selbst gerade Probleme mit Datenbanken...... lol

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.04.2003, 21:01 Uhr
~spunky2
Gast


Danke, ich probiers mal!
Meld mich dann, obs so geklappt hat.

Grüsse spunky2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.04.2003, 21:26 Uhr
~spunky2
Gast


Hab den Code mal auf mein RecordSet abgestimmt:

void CSternePruefView::OnButton2()
{

CRecordset* pSet = OnGetRecordset();
if( pSet->IsBOF( ) )
return;
// Kein Recordset vorhanden
//File erzeugen

HANDLE hFile = CreateFile(_T("E\Ablage\DB.DAT"),
GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);


if (hFile == INVALID_HANDLE_VALUE)
AfxMessageBox(_T("Datei konnte nicht erzeugt werden!"));
else
{
while ( !pSet->IsEOF( )) {
m_pSet->MoveNext( );
//Daten auslesen
//Bsp:
CFile file(hFile);
static const TCHAR sz[] = _T(pSet->m_sAddress);
file.SeekToEnd();
file.Write(sz, lstrlen(sz));
file.Close();
}
}
}
Erhalte aber folgende Fehlermeldungen:

EASTRONOMIEPRG\SternePruef\SternePruefView.cpp(286) : warning C4129: 'A' : Nicht erkannte Folge von Escape-Zeichen
EASTRONOMIEPRG\SternePruef\SternePruefView.cpp(286) : warning C4129: 'D' : Nicht erkannte Folge von Escape-Zeichen
EASTRONOMIEPRG\SternePruef\SternePruefView.cpp(299) : error C2664: '__thiscall CFile::CFile(int)' : Konvertierung des Parameters 1 von 'void *' in 'int' nicht moeglich
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
EASTRONOMIEPRG\SternePruef\SternePruefView.cpp(300) : error C2039: 'm_sAddress' : Ist kein Element von 'CRecordset'
emicrosoft visual studio\vc98\mfc\include\afxdb.h(564) : Siehe Deklaration von 'CRecordset'
Fehler beim Ausführen von cl.exe.

Nun weiß ich nicht weiter?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.04.2003, 21:40 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
1,2. Fehler könnte möglicherweise sein:
Probier mal

C++:
HANDLE hFile = CreateFile(_T("E:\\Ablage\\DB.DAT"),...


3. Fehler: geht möglicherweise mit den ersten beiden weg (glaub aber nicht) - probier noch mal. Wenn er noch immer da ist, gibts noch eine andere Lösung.
4.Fehler: m_sAddress war nur ein Sample. Dort setzt du deine Spalten ein
5. Fheler geht normalerweise mit dem 4. weg.
Hoffe, es kommen jetzt weniger Fehler

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.04.2003, 21:57 Uhr
~spunky2
Gast


Hi,

danke für deine schnelle Antwort, hab aber immer noch Probleme:

static const TCHAR sz[] = _T(m_pSet->m_NR);

Ich hab 10 Variablen in meinem RecordSet, muß ich da jetzt 10mal die zeile mit je einer anderen Variable einfügen?

folgende Fehlermeldung kommt trotzdem:

error C2440: 'initializing' : 'class CString' kann nicht in 'const char []' konvertiert werden
Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden

Außerdem kommt noch dieser:

'__thiscall CFile::CFile(int)' : Konvertierung des Parameters 1 von 'void *' in 'int' nicht moeglich
Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

Hängt das damit zusammen, das ich die Daten über einen Buttonclick auslesen will und diese Funktion void ist??

Das mit den Escape-Zeichen kommt auch noch:
warning C4129: 'A' : Nicht erkannte Folge von Escape-Zeichen

Kannst Du mir nochmal helfen?
Danke

Grüsse spunky2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.04.2003, 22:03 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Dü könntest die schleife auch so schreiben

C++:
CString strTemp;
while ( !rsCustSet.IsEOF( )) {
         rsCustSet.MoveNext( );
         //Daten auslesen
         //Bsp:
         CFile file(hFile);
         file.SeekToEnd();
         strTemp = rsCustSet.m_sAddress;
         file.Write(strTemp, strTemp.GetLength());
         file.Close();
        }



Das mit der File schau ich mir gleich noch schnell an. Das mit dem Escape Zeichen ist komisch
CU
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.04.2003, 22:19 Uhr
~spunky2
Gast


Super!!!!

Das mit der Schleife scheint zu klappen. :-)
Muß ich jetzt trotzdem 10mal die Variable angeben? Also:

strTemp = m_pSet->m_NR;
strTemp1 =m_pSet->m_R_H; usw.

Das mit dem File und Escape kommt immer noch.

Danke

Grüsse spunky2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: