bigpoint Geschrieben 18. November 2002 Geschrieben 18. November 2002 Hi, wie ist es eigentlich mit ADO also ich will DB mit Hilfe von ADO verbinden ( früher habe ich es immer mit ODBC gemacht ) und so wie ich es verstanden habe brauche ich dazu auch ODBC Treiber ?? wenn es stimmt dann wo zu ist eigentlich ADO gut ?? Bis jetzt habe ich es immer so verstanden das ich das ganze mit ADO ohne ODBC Treiber machen kann , wer kann es mir erklären ??? Vielen Dank Zitieren
robotto7831a Geschrieben 18. November 2002 Geschrieben 18. November 2002 Hallo, ODBC benutzt man zum Zugriff auf Datenbanken, wie Du schon gesagt hast. Man muss aber in den ODBC Einstellungen, die Datenbank definieren und einen ODBC Namen zum ansprechen der Einstellungen vergeben. Bei ADO läuft das etwas anders. Mit ADO kann man direkt auf Datenbanken zugreifen ohne den Umweg über ODBC. Frank Zitieren
bigpoint Geschrieben 19. November 2002 Autor Geschrieben 19. November 2002 Originally posted by palvoelgyi Hallo, ODBC benutzt man zum Zugriff auf Datenbanken, wie Du schon gesagt hast. Man muss aber in den ODBC Einstellungen, die Datenbank definieren und einen ODBC Namen zum ansprechen der Einstellungen vergeben. Bei ADO läuft das etwas anders. Mit ADO kann man direkt auf Datenbanken zugreifen ohne den Umweg über ODBC. Frank Ok dann sagen wir ich habe ein DB der Test heißt und der hat dann Tabelle Benutzer wie greife ich auf die Tabelle zu ich kann nur so : Open(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test",L"",L"",adOpenUnspecified); } Data Source=Test -> ist es nicht verweis auf ODBC Treiber ?? Zitieren
bigpoint Geschrieben 19. November 2002 Autor Geschrieben 19. November 2002 Vielen Dank die Frage hat sich schon von selbst geklärt, jetz ist aber so versuche mit Hilfe von ADO auf DB zugreifen, dazu habe eine Klasse geschrieben: #define INITGUID #import "C:\Programme\Gemeinsame Dateien\System\ADO\msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile") using namespace ADOCG; #include "icrsint.h" class CCustomRs : public CADORecordBinding { public: BEGIN_ADO_BINDING(CCustomRs) ADO_VARIABLE_LENGTH_ENTRY2(1, adVarChar, m_szFirstName, Âsizeof(m_szFirstName), lFirstNameStatus, TRUE) ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_szLastName, Âsizeof(m_szLastName), lLastNameStatus, TRUE) ADO_VARIABLE_LENGTH_ENTRY2(3, adVarChar, m_szPhone, Âsizeof(m_szPhone), lPhoneStatus, TRUE) END_ADO_BINDING() public: CHAR m_szFirstName[51]; CHAR m_szLastName[51]; CHAR m_szPhone[51]; }; leider kriege ich folgenden Fehler : warning C4146: Einem vorzeichenlosen Typ wurde ein unaerer Minus-Operator zugewiesen; das Ergebnis ist weiterhin vorzeichenlos wenn ich auf den Fehler klicke lande ich : enum RecordCreateOptionsEnum { adCreateCollection = 8192, adCreateStructDoc = -2147483648, adCreateNonCollection = 0, adOpenIfExists = 33554432, adCreateOverwrite = 67108864, adFailIfNotExists = -1 }; Zitieren
Klotzkopp Geschrieben 19. November 2002 Geschrieben 19. November 2002 Funktioniert es denn? Und was ist das für ein Zeichen vor sizeof? Zitieren
bigpoint Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 Originally posted by Klotzkopp Funktioniert es denn? Und was ist das für ein Zeichen vor sizeof? Einem vorzeichenlosen Typ wurde ein unaerer Minus-Operator zugewiesen; das Ergebnis ist weiterhin vorzeichenlos :confused: Zitieren
bigpoint Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 Âsizeof -> ist natürlich falsch sollte sizeof ;-() Zitieren
Klotzkopp Geschrieben 20. November 2002 Geschrieben 20. November 2002 Originally posted by 007ski Einem vorzeichenlosen Typ wurde ein unaerer Minus-Operator zugewiesen; das Ergebnis ist weiterhin vorzeichenlosJa, das hattest Du schon geschrieben. Das ist aber eine Warnung des Compilers, kein Fehler. Du kannst das Programm also trotzdem starten. Die Frage ist, tut es, was es soll? Zitieren
bigpoint Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 Leider nicht es ist so wenn ich es #define INITGUID #import "C:\Programme\Gemeinsame Dateien\System\ADO\msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile") using namespace ADOCG; #include "icrsint.h" in die class CCustomRs schreibe dann kriege ich Fehler: Einem vorzeichenlosen Typ wurde ein unaerer Minus-Operator zugewiesen; das Ergebnis ist weiterhin vorzeichenlos Aber wenn ich den import in die Dokument Header Klasse schreibe dann kriege ich es nicht als Fehler sondern als Warnung ??? Komisch oder ???? Zitieren
Klotzkopp Geschrieben 20. November 2002 Geschrieben 20. November 2002 Originally posted by 007ski Leider nicht es ist so wenn ich es [schnibbel] in die class CCustomRs schreibe dann kriege ich Fehler: Einem vorzeichenlosen Typ wurde ein unaerer Minus-Operator zugewiesen; das Ergebnis ist weiterhin vorzeichenlosWelche Nummer hat dieser Fehler? Aber wenn ich den import in die Dokument Header Klasse schreibe dann kriege ich es nicht als Fehler sondern als Warnung ??? Schreib den Block mal in stdafx.h. Zitieren
bigpoint Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 ich versuche so: #pragma warning (disable: 4146) #define INITGUID #import "C:\Programme\Gemeinsame Dateien\System\ADO\msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile") using namespace ADOCG; #include "icrsint.h" #pragma warning (default: 4146) Zitieren
Crush Geschrieben 20. November 2002 Geschrieben 20. November 2002 Hier ist eine gute Link-Sammlung zum Thema ADO. Evtl. steht noch etwas Hilfreiches in den FAQs. Zitieren
bigpoint Geschrieben 20. November 2002 Autor Geschrieben 20. November 2002 Originally posted by Crush Hier ist eine gute Link-Sammlung zum Thema ADO. Evtl. steht noch etwas Hilfreiches in den FAQs. Also mit dem #pragma warning (disable: 4146) funk so weit gut jetzt ist aber so dass ich kann meinen progi überhaupt nicht ausführen kriege zwar keinen Fehler aber der bricht bei Debug an die Stelle if (!CDocument::OnNewDocument()) return FALSE; Mit einem Fensterfehler Meldung „Unbehandelte Ausnahme in ......exe @Crush PS. dek Link ist OK Danke Zitieren
bigpoint Geschrieben 21. November 2002 Autor Geschrieben 21. November 2002 Wenn ich es aber auskommentiere dann funk, was kann es sein ?? Zitieren
Klotzkopp Geschrieben 21. November 2002 Geschrieben 21. November 2002 Originally posted by 007ski Wenn ich es aber auskommentiere dann funk, was kann es sein ?? Erdstrahlen. Oder Polarlichter. Mal im Ernst, wie soll irgendjemand alle Codeänderungen, die Du gemacht hast, nachvollziehen, und dann diese Frage beantworten, wenn Du nicht einmal sagst, was Du wo auskommentiert hast? Und was die Ausnahme angeht: Starte das Programm im Debugger, damit Du uns sagen kannst, an welche Stelle im Code dieser Fehler auftritt, am besten mit Callstack. Nur als Info: #pragma warning (disable: 4146) macht nichts weiter, als die Warnung abzuschalten. Du behandelst die Symptome, nicht die Krankheit. Es gibt aber Fälle, wo man das einfach machen muss. Ich bin da bei ADO nicht ganz auf dem laufenden. Kannst Du vielleicht Dein ganzes Projekt irgendwo hochladen, damit wir uns mal den Quellcode ansehen können? Natürlich nur, wenn Du das willst und das Copyright hast. Zitieren
bigpoint Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 Jetzt geht es um nichts anderes als um die Klasse OnNewDocument() die der Assistent alleine erstellt in der Klasse schreib er auch standardmäßig if (!CDocument::OnNewDocument()) return FALSE und wenn ich es auskommentiere dann funk PS. Mit dem Projekt irgendwo hochladen wurde gerne aber leider geht nicht Vielen Dank Zitieren
Klotzkopp Geschrieben 22. November 2002 Geschrieben 22. November 2002 Hast Du eine dieser drei Methoden überschrieben? - IsModified - DeleteContents - SetModifiedFlag Wie sieht der Callstack zum Zeitpunkt der Ausnahme aus? Hast Du die MFC-Quellcodes installiert? Wenn ja, setze mal einen Breakpoint auf die Zeile, starte den Debugger und spring rein (F11). Da drin kannst Du dann mit F10 die einzelnen Schritte durchgehen, damit man genauer eingrenzen kann, wo der Fehler auftritt. Zitieren
Crush Geschrieben 22. November 2002 Geschrieben 22. November 2002 Probier mal testweise ein paar Compileroptimierungen auszuschalten oder die C++- Ausnahmebehandlung deaktivieren und gucken was dann passiert. Versuch die Exception selber abzufangen oder den Ursprung mal genauer anzuschauen. Ohne Codebeispiel kommt man wohl kaum mehr weiter. Ich würde auch mal alles durchtracen wie Klotzkopp es sagt um zu sehen wann warum und wo was passiert und wie die Objekte zu dem Zeitpunkt aussehen. Zitieren
bigpoint Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 Also es ist so, bei Debug komme ich in die OnNewDocument() Methode von Microsoft in die Methode wird DeleteContents () aufgerufen und da bringt er Fehler ? Ich allerdings rufe die Methode DeleteContents() in ...Doc.cpp weil ich will sicherstellen, daß beim Schließen der Anwendung alles ordnungsgemäß aufgeräumt wird so sieht sie aus void .........Doc::DeleteContents() { // Recordset schließen if (m_pRs) m_pRs->Close(); // Ist Zeiger auf Datensatzbindung gültig? if (m_piAdoRecordBinding) // Freigeben m_piAdoRecordBinding->Release(); // Recordset-Zeiger auf NULL setzen m_pRs = NULL; // COM-Umgebung herunterfahren CoUninitialize(); CDocument::DeleteContents(); } Zitieren
Crush Geschrieben 22. November 2002 Geschrieben 22. November 2002 Vielleicht darfst Du das Deletecontents wegen Members nur über Dein Objekt aufrufen: // This example is the handler for an Edit Clear All command. void CMyDoc::OnEditClearAll() { DeleteContents(); UpdateAllViews(NULL); } void CMyDoc::DeleteContents() { // Re-initialize document data here. } Zitieren
Klotzkopp Geschrieben 22. November 2002 Geschrieben 22. November 2002 Der Aufruf von DeleteContents aus OnNewDocument heraus ist schon in Ordnung. Das ist die Standardimplementierung von OnNewDocument. Aber weil DeleteContents u.a. auch zur Initialisierung eines neuen Dokuments verwendet wird, darf dieser Code da nicht rein. @007ski: Setze bitte mal den Code, der jetzt in DeleteContents steht, in die OnCloseDocument-Methode Deiner Dokumentklasse. Falls Du keine hast, kannst Du sie mit dem Klassenassistenten erstellen. Zitieren
bigpoint Geschrieben 22. November 2002 Autor Geschrieben 22. November 2002 OnCloseDocument Ist die Lösung Danke :marine Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.