Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Ich muß nochmal nerven. Für die Beschreibung muß ich wohl etwas weiter ausholen.

Ich habe ein *.mdb File incl. Kennwort erstellt.

Ich habe inzwischen meine Klasse, welche vom Typ DaoRecordset abgeleitet ist, soweit geändert das ich Methoden habe welche mir das *.mdb File über eine Variable von Typ CDaoDatabase das File öffnet. Es ist mir auch möglich innerhab dieser Klasse Variablen vom Typ recordset zu bilden und Abfragen zu formulieren und auszuführen, eigentlich alles ok.

Ich möchte aber gerne so wie vorher arbeiten. Eine Instanz von meinem recordset bilden diese öffnen und über diese Instanz auf die Variablen des *.mdb zugreifen. Ich möchte nicht über die Sql abfragen mit der db arbeiten.

Meine Frage ist nun, es muß doch möglich sein der Instanz die Eigenschaften der innerhalb der Klasse gebildeten Variable vom Typ recordset welche ich auch geöffnet habe zuzuweisen. Es müßte eine Frage des Gültigkeitsbereichs sein.

Wenn ich z.B. meine Variable vom typ Recordset innerhalb der Klasse benutze und anschließen die Variable der Instanz von meiner Klasse recordset so sind es zwei unterschiedliche. Vielleicht ist mein Ansatz auch falsch.

Ich würde mich freuen wenn die Antworten etwas ausführlicher sind, da ich in KEINER Ausbildung oder Studium bin. Das Internet und Bücher sind leider meine einzigsten Quellen. Danke im voraus Joerg

Geschrieben

Ich versuche mal den Sinn wiederzugeben, Syntaktisch totaler Schrott aber ich hoffe man kann den Sinn verstehen:

class A

{

public:

Methode_open_A();

Methode_tu_was_A();

int a,b,c;

A()

{

a=1;

b=2;

c=3;

}

}

///////////////////////////////////////////////////////

class B abgeleitet von A

{

public:

int a,b,c;

CDaoWorkspace m_wk;

CDaoDatabase m_db;

Methode_open_B();//überschrieben und ich verwende in dieser Methode zum Beispiel Variable d und e zum öffnen .

Methode_tue_was_A();//aus der abgeleiteten Klasse A

}

B():m_database(&m_wk),m_recordset(&m_database)

{

a=10;

b=20;

c=30;

CDaoDatabase m_database(&m_wk);

CDaoRecordset m_recordset(&m_database);

}

}

///////////////////////////////////////////////////////////

Class C

{

public:

B b:

C()

{

..

};

}

b.Methode_open_B()//Die Datenbank öffnen und das recordset

b.a;//Mit diesem zugriff kann ich auf die Variable der klasse B zugreifen also a==10, was ich brauche ist aber a==1;

Wenn ich die Methode_tue_was_A() verwende so bekomme ich einen Fehler.Da ich nicht den korrekten Gültigkeitsbereich habe.

Ich habe in meiner Klasse B die Datenbank mit einer 'überschriebenen' Methoden geöffnet bekommen aber ich kann nicht über vorhandene Methoden weiter mit der Datenbank arbeiten. Da liegt daran das ich innerhalb der neuen Methode ,mit der ich überschrieben habe, mich weder auf bisherige Variablen der Instanz zurückgreife noch Werte hinterher weitergebe ich habe also keinen Bezug zu der abgeleiteten Klasse. Ich hätte genausogut eine neue leere Klasse schreiben können was ich nicht möchte.

Wie gesagt erschlagt mich nicht für die Syntax, ich hoffe ich habe mein Problem etwas besser geschildert sorry für die langen Texte :rolleyes:

Geschrieben
b.a;//Mit diesem zugriff kann ich auf die Variable der klasse B zugreifen also a==10, was ich brauche ist aber a==1;

Nach deinem Beispiel kann a in dem Fall aber nie 1 sein. a wird ja nur im Konstruktor der Klasse A auf 1 gesetzt. Wenn du nun eine Instanz von B erzeugst wird aber nicht der Konstruktor von A sondern von B aufgerufen und deshalb ist a gleich 10. Das hat mit Gültigkeitsbereichen nichts zu tun.

Geschrieben

Ja ziehmlich verwirrend meine Beschreibung, aber durch den Versuch es Dir nochmals genauer zu beschreiben, habe ich die Lösung gefunden.

Ich stand da wie der Ochse vom Berg.

Im Konstruktor der abgeleiteten Klasse habe ich die Möglichkeit, was ich merkwürdigerweise erst jetzt bemerkt habe, der Instanz einen Pointer vom Typ CDaoDatabase mitzugeben, also mein fehlende Bindung sozusagen.

Ist schon manchmal witzig wenn man sein Problem versucht genau zu schildern, daß man auf die Lösung kommt:rolleyes: . Hättest Du nicht gefragt hätte ich nicht versucht erneut zu beschreiben. Also danke

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...