ADO ;-))
-
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)
-
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
-
Hallo ist hier jemand, oder mag mich keiner ich hoffe das mein Problem nicht so groß ist denn dann habe ich wirklich Problem .
-
Wir sind nicht dazu da, hier mit Dir
'SuchtmirmaldenFehleraberCodegebichEuchnicht' zu spielen!
-
Moment entweder bin ich blind oder ?? Was steht denn oben eigentlich nur Code oder ??
Was braucht Ihr noch ?? Und ich will wirklich nicht Spielen ich brauche wirklich Hilfe
-
Nennst Du das etwa Code, was Du da geschrieben hast??
Das ist einfach nur ne Deklaration, und bei ner Deklaration wird nix ausgeführt, also kann auch kein Fehler entstehen!
-
BOOL ..........Doc::OnNewDocument()
{
if (!CDocument::OnNewDocument())return FALSE;
// Verbindungszeichenfolge und SQL-Befehl festlegen
m_strConnection = _T("Provider=SQLOLEDB;Data Source=TEST;Initial Catalog=Test;User Id=sa");
m_strCmdText = _T("select * from Benutzer");// Zeiger auf Recordset und Bindung initialisieren
m_pRs = NULL;
m_piAdoRecordBinding = NULL;
// COM-Umgebung initialisieren
::CoInitialize(NULL);
try
{
// Datensatzobjekt erzeugen
m_pRs.CreateInstance(__uuidof(Recordset));// Datensatzobjekt öffnen
m_pRs->Open((LPCTSTR)m_strCmdText, (LPCTSTR)m_strConnection,
adOpenDynamic, adLockOptimistic, adCmdUnknown);// Zeiger auf Bindungsschnittstelle des Datensatzes holen
if (FAILED(m_pRs->QueryInterface(__uuidof(IADORecordBinding),
(LPVOID *)&m_piAdoRecordBinding)))
_com_issue_error(E_NOINTERFACE);
// Datensatzklasse an Recordset binden
m_piAdoRecordBinding->BindToRecordset(&m_rsRecSet);// Zeiger auf Ansicht holen
POSITION pos = GetFirstViewPosition();
.............View* pView = (.........View*)GetNextView(pos);
if (pView)
// Datensatzgruppe mit Formular synchronisieren
pView->RefreshBoundData();
}
// Fehler vorhanden?
catch (_com_error &e)
{
// Fehler anzeigen
GenerateError(e.Error(), e.Description());
}return TRUE;
}
wenn ich aber
if (!CDocument::OnNewDocument())return FALSE;
aus kommentiere kann ich ausführen sonst kriege ich keinen Fehler aber kann nicht ausführen
-
Na dann setz nun noch nen Breakpoint, führe das ganze schrittweise aus, damit man weiss, in welcher Zeile die Exception ausgelöst wird!
-
Wie gesagt der bleibt bei if (!CDocument::OnNewDocument()) stehen
-
Wie gesagt der bleibt bei if (!CDocument::OnNewDocument()) stehen
Kann gar net sein, weil diese Methode nix tut, was eine Exception auslösen könnte!
-
Hab genau das gleiche Problem!
Hab mich genau an die Vorgaben und Anleitungen des Buches Visual C++6 (in 21 Tagen) gehalten. Trotzdem kommt die gleiche Fehlermeldung! Kann mir bitte jemand eine Lösung für dieses Problem zukommen lassen!? Wär für jede Hilfe dankbar.
(Verwende C++6 prof, mit Windows XP, komplett gleicher Code wie im Buch, und dazu noch Anfänger)
Schon jetzt DANKE.
-
Zusätzlich erscheint die Fehlermeldung
c:\vcp21\programme\tag15\dbado\dbado_alt\debug\msado15.tlh(1317) : error C2629: 'short (' unerwartet
c:\vcp21\programme\tag15\dbado\dbado_alt\debug\msado15.tlh(1317) : error C2238: Unerwartete(s) Token vor ';'Was kann ich tun?
-
Versuche mal die Eventvariablen zu deklarieren.
CHAR m_szFirstName[51];
LONG lFirstNameStatus; <----------------------------
CHAR m_szLastName[51];
usw.
-
Hab die Variablen wie folgt deklariert.
// CustomRs.h: Schnittstelle für die Klasse CCustomRs.
//
//////////////////////////////////////////////////////////////////////#define INITGUID
#import "C:\Programme\Gemeinsame Dateien\System\ado\msado15.dll"
rename_namespace("ADOCG") rename("EOF","adoEOF");
using namespace ADOCG;
#include "icrsint.h"class CCustomRs :
public CADORecordBinding{
BEGIN_ADO_BINDING(CCustomRs)
ADO_FIXED_LENGTH_ENTRY (1, adInteger, m_lAddressID, lAddressIDStatus, FALSE)
ADO_VARIABLE_LENGHT_ENTRY2 (2, adVarChar, m_szFirstName, sizeof (m_szFirstName), lFirstNameStatus, TRUE)
ADO_VARIABLE_LENGHT_ENTRY2 (3, adVarChar, m_szLastName, sizeof (m_szLastName), lLastNameStatus, TRUE)
ADO_FIXED_LENGTH_ENTRY (4, adDate, m_dtBirdthdate,lBirthdateStatus, TRUE)
ADO_FIXED_LENGTH_ENTRY (5, adBoolean, m_bSendCard, lSendCardStatus, TRUE)
END_ADO_BINDING()public:
LONG m_lAddressID;
ULONG lAddressIDStatus;CHAR m_szFirstName[51];
ULONG lFirstNameStatus;CHAR m_szLastName[51];
ULONG lLastNameStatus;DATE m_dtBirthdate;
ULONG lBirthdateStatus;VARIANT_BOOL m_bSendCard;
ULONG lSendCardStatus;
};In diesem Teil der msado15.tlh erscheint dann die Meldung. (Nur ein Auszug daraus)
_variant_t Filter;
__declspec(property(get=GetSort,put=PutSort))
_bstr_t Sort;
__declspec(property(get=GetAbsolutePosition,put=PutAbsolutePosition))
PositionEnum_Param AbsolutePosition;
__declspec(property(get=GetBOF))
VARIANT_BOOL BOF;
__declspec(property(get=GetBookmark,put=PutBookmark))
_variant_t Bookmark;
__declspec(property(get=GetCacheSize,put=PutCacheSize))
long CacheSize;
__declspec(property(get=GetCursorType,put=PutCursorType))
enum CursorTypeEnum CursorType;
__declspec(property(get=GetEOF))
VARIANT_BOOL EOF; <-------------------------------Darauf verweist die Fehlermeldung
__declspec(property(get=GetAbsolutePage,put=PutAbsolutePage))
PositionEnum_Param AbsolutePage;
__declspec(property(get=GetLockType,put=PutLockType))
enum LockTypeEnum LockType;
__declspec(property(get=GetMaxRecords,put=PutMaxRecords))
ADO_LONGPTR MaxRecords;
__declspec(property(get=GetRecordCount))
ADO_LONGPTR RecordCount;//
// Wrapper methods for error-handling
//
-
[ Dieser Beitrag wurde am 18.06.2003 um 09:54 Uhr von Alex1860 editiert. ]
-
Ich arbeite schon längere Zeit mit der ADO, hatte dieses Probblem noch nicht, daher kann ich mich nur auf die Unterschiede stürzen.
Die Variablen stehen bei mir nur im Protected Bereich.
Wie nutzt du dann diese Schnittstelle?
In etwa so?
class CMyDialog :
public CDialog,
public CCustomRs
{
}
-
Hi Roland,
bin gerade dabei C++ zu lernen. Dieses Bsp. ist im Visual C++6 Buch von SAMS aufgeführt. Hab mich dabei nur an die Anweisungen gehalten. Eben Schritt für Schritt nachgemacht. Hättest Du mal ein funktionierendes Bsp. für mich? Möchte gern mal den Aufbau eines funktionierenden Codes sehen. Zur Frage WARUM! Möchte später gern mal ein Prog schreiben das für die Zukunft gerüstet ist. Und da ADO nun mal das neueste ist, bietet es sich an. Außerdem macht es mich wahnsinnig nicht zu wissen woran es liegt
Über ODBC läuft es ja schon. Verstehst aber: ICH WILL, ICH WILL, ICH WILL!!!
-
Da die Sourcen meiner Firma gehören kann ich Dir da nichts geben.
Aber einen Tip
Mach Dir mal ein neues Projekt auf.
Dann im Menu
<Projekt>->
<Dem Projekt hinzufügen>->
<Komponenten und Steuerelement>
Im Dialog <Visual C++ Components> wählen
und in der Liste <ADO-Datengebundenes Dialogfeld> aussuchen.Dies erstellt Dir einen funktionierenden Code.
Willst du im erstellten Dialog Daten ändern solltest du im BINDING alle FALSE auf TRUE setzen.Viel Glück
-
Bin wieder mal an das Problem rangegangen. Hatte aber leider immer noch keinen Erfolg. Gibt es jemanden der ein kleines Bsp. hat das er mir schicken könnte?
Es geht nur darum den funktionierenden Code einmal zu sehen. Glaub daß mir das sehr weiterhelfen könnte.
Schon jetzt DANKE.