AutoWert aus einer AccessDB



  • Hi als allererstes mal ja im VC++ ist es long, aber long ist nichts anderes als ein long integer! Weißt du denn auch was da im Konstruktor passiert? Warum du das auf 0 setzen musst?
    Du initialisierst deine Werte mit einer Zahl (muss nicht 0 sein) damit du nicht irgendwas drin stehen hast. bei mir stand neulich in nem Feld ne Zahl die durchaus hätte sein können und ich hab mich gefragt wo die her kam, bis ich dann gemerkt hab dass ich nicht initialisiert hab.

    Ja es gibt was zum den Wert erhöhen, am besten schreibst dir im Set ne methode getMaxID die dir mach moveLast und dann return ID die ID wo du dann bekommst noch ++ und alles IO dazu kannst dir auch das hier mal anschauen



  • Das ist doch ein AUTOwert. Lass den mal leer, IMHO wird das Hochzählen dann von Access erledigt. 😃

    PS: Funktioniert jedenfalls bei drei anderen DBMS. Access ist so lange her bei mir... 🙄



  • natürlich hast du recht! aber sie braucht ja die stelle an die sie was einfügt und wenn sie move last macht und dann an die nächste stelle schreibt sollte das doch eigentlich hinten angefügt werden, oder?



  • Ähm? 😕
    Was sind deine Bedenken? 😕



  • Öhm wenn DU schon so fragst, dann wahrscheinlich unbegründete Bedenken, ich dachte nur wenn sie einfach einen einfügt, dann steht der doch nicht zwangsläufig am ende, oder?? also ich hab so ne FKT:

    bool CDokumentenVerwaltungSet::AddRecord(CString PCD,...)
    {
    	//prüfen ob geschrieben werden kann
    	if (CanUpdate() && !IsDeleted())
    	{
    	Edit();
    	Update();
    	}
    	else
    		return false;
    	// ID für den neuen Datensatz ermitteln
    	long m_lNewID = GetMaxID() + 1;
    
    	// Den neuen Datensatz hinzufügen
    	AddNew();
    	m_PCD_NR = PCD;
    	...
    
    	Update();
    	Requery();
    	return true;
    }
    

    wobei getMaxID oben beschriebenes macht, ist das unnötig?? Muss ich gar nicht an ende vor dem einfügen??



  • In einer Datenbank ist die Reihenfolge völlig egal. 😃
    Dafür hast du doch m_strSort oder auch Views. 😉

    Und es ist egal, wo der Cursor steht, wenn AddNew aufgerufen wird, hauptsache, das Recordset ist offen. 🙂



  • hm also gut, aber falsch ist es doch auch nicht oder? Dann seh ich zumindest wie es eingetragen ist ohne ein Sort oder eine View. Aber natürlich und wie immer muss ich mich geschlagen geben und sagen: "Du hast recht!" 🙂



  • AddNew macht den neuen immer ans Ende, also ist das schon halbwegs sortiert, so wie du das haben magst.

    Du kannst es ja bei Gelegenheit mal ausprobieren. 🙂



  • OK werd ich tun, wenn ich mal dazu komme, hab nämlich noch ein Projekt aufs Auge gedrückt bekommen, bei dem ich noch nicht mal weiß wie ich anfangen soll (.wav Dateien in ASCII wandeln und damit zig Sachen berechnen, aber erster Teil ist schon schwer genug!). Also wenn ich meine 4 laufenden Projekte abgeschlossen hab. 😃 Nein quatsch interessiert mich ja schon drum probier ich es auch!



  • Polofreak schrieb:

    Hi als allererstes mal ja im VC++ ist es long, aber long ist nichts anderes als ein long integer! Weißt du denn auch was da im Konstruktor passiert? Warum du das auf 0 setzen musst?
    Du initialisierst deine Werte mit einer Zahl (muss nicht 0 sein) damit du nicht irgendwas drin stehen hast. bei mir stand neulich in nem Feld ne Zahl die durchaus hätte sein können und ich hab mich gefragt wo die her kam, bis ich dann gemerkt hab dass ich nicht initialisiert hab.

    Ja es gibt was zum den Wert erhöhen, am besten schreibst dir im Set ne methode getMaxID die dir mach moveLast und dann return ID die ID wo du dann bekommst noch ++ und alles IO dazu kannst dir auch das hier mal anschauen

    Klar, weiß ich für was der Konstruktor da ist und was dort passiert, und das man die variablen initalisieren sollte, leider war mir die Bedeutung des L"" nicht ganz klar und ich dachte, das für Zahlen da ein anderer Buchstabe hin muss (C"" ? *g*), leider habe ich in der MSDN nichts gefunden, und damit wären wir wieder am Ursprung warum dieser Post enstand ist... 😉

    Die von die besagte Methode funktioniert Polo, habs grad ausprobiert, ein wenig umständlich, aber hauptsachens es funktioniert. 🙂

    Das ist doch ein AUTOwert. Lass den mal leer, IMHO wird das Hochzählen dann von Access erledigt.  
    
    PS: Funktioniert jedenfalls bei drei anderen DBMS. Access ist so lange her bei mir...
    

    Das funktioniert ebenfalls, den Autowert setzt Access wenn man ihn nicht ausdrücklich reinschreibt automatisch, unglücklicherweise fängt er da bei mir mit 6228 an und das geht dann immer ++ je eintrag.

    Euch beiden nochmal vielen Dank, ihr habt mir sehr geholfen 🙂


Anmelden zum Antworten