Werte addieren



  • Ich danke euch! Sum() kannte ich noch nicht...

    Schönes Wochenende!



  • Mal ne ganz doofe Frage:

    Wie bekomme ich diese Summe jetzt in die Membervariable m_Wert, die das Ganze in einem Editfeld anzeigen soll?

    Bin wohl grade voll neben mir....



  • Moin!

    Ich häng immer noch an dem Problem. Wie kann ich die Summe, die ich dem SQL ermittelt habe an eine Membervariable übergeben? Ich hab das so probiert:

    double Summe1 = 0;
    
    	rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT Sum(Dauer) AS Summe1 FROM Tabelle_Main ",0);
    
    	m_Woche = Summe1;
    
    	UpdateData(FALSE);
    

    Die Übergabe klappt nicht. Das SQL müsste eigentlich korrekt sein...
    Bitte helft mir mal weiter. Es ist inzwischen dringend 😮

    Danke! 😉

    Edit:
    Ist es vielleicht möglich, dass der Fehler durch die Spalte verursacht wird? Beim debuggen fiel mir auf, dass bei Sum(Dauer) nichts aus der Tabelle gelesen wird. Die Spalte heißt "Dauer" und enthält nur double-Werte und die sollen halt addiert werden. Langsam bin ich echt am Verzweifeln...
    Warum klappt das nicht???



  • du mußt erst den Wert aus dem Recordset holen, sonst kann sich Summe1 schlecht verändern. Also:

    [cpp]
    double Summe1 = 0;

    rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT Sum(Dauer) AS Summe1 FROM Tabelle_Main ",0);

    COleVariant ovSumme;
    rs.GetFieldValue("Summe1", ovSumme);

    m_Woche = ovSumme.dblVal;

    UpdateData(FALSE);
    [/cpp]

    MfG



  • Ich bekomme folgende Fehlermeldung:

    "Fehler bei GetRows-Operation. Die angeforderte Spalte ist kein Element der Datensatzgruppe."

    Woher kann der Fehler kommen? Die aufgerufene Spalte heißt "Dauer" und auch sonst hab ich keine Ahnung, woher dieser Fehler kommt. Wenn ich nur "SELECT Dauer ..." mache, kommt der Fehler auch. Bei "SELECT * ..." nicht...



  • kommt der Fehler wirklich auch damit:

    rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT Dauer AS SummeD FROM Tabelle_Main",0);
    
        COleVariant ovSumme;
        rs.GetFieldValue("SummeD", ovSumme);
    

    ?

    MfG



  • Ja!
    Hab da auch schon weiter rumprobiert. Wenn anstatt "Dauer" plötzlich "Duaer" dasteht, also ein Tippfehler gemacht wurde, dann erkennt der, dass die Spalte nicht existiert.

    Wenn ich da jetzt weiterdenke, hab ich also zur Zeit einen Fehler bei dem eine existierende Spalte nicht existiert. 🙄

    Kann man das irgendwie umgehen. Von mir aus auch durch eine ganz andere Variante, dass ich an meine Summe komme und die ausgeben kann... 😕



  • nein, das solltest du nicht umgehen, du mußt dich darum kümmern, warum "eine existierende Spalte nicht existiert". Es bringt nichts, Problemen auszuweichen. Wie ist das RecordSet erstellt (Konstruktor-Aufruf?)? Prüfe die Spaltennamen, sind da keine Leerzeichen bei Dauer dran oder davor?

    MfG



  • Das Problem ist, dass mir langsam die Zeit wegrennt.

    Der Fehler tritt im Übrigen bei allen Spalten der Tabelle auf.
    Hier nochmal der komplette Code der Funktion:

    CDaoDatabase db;
    	db.Open("Database.mdb");
    
    	UpdateData(TRUE);
    
    	CTabelleMain rs;//abgeleitet von CDaoRecordset; include vorhanden
    
    	double Summe1 = 0;
    
    	rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT Sum(Dauer) AS Summe1 FROM Tabelle_Main",0);
    
    COleVariant ovSumme; 
        rs.GetFieldValue("Summe1", ovSumme); 
    
        m_Pro1Woche = ovSumme.dblVal; //m_Pro1Woche -> Editfeld in das die Summe geschrieben werden soll
    
    	UpdateData(FALSE);
    
    	rs.Close();
    	db.Close();
    

    Ich werd mal weiterprobieren und alles nochmal überprüfen...



  • und das ist der Fehler:

    CTabelleMain rs;
    

    benutze ein unabhängiges RecordSet für kurze Abfragen:

    // hier übergibst du dein geoeffnetes CDaoDatabase-Objekt, ich habe es einfach db genannt
    CDaoRecordset rs(&db);
    
        double Summe1 = 0;
    
        rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "SELECT Sum(Dauer) AS SummeD FROM Tabelle_Main ",0);
    
        COleVariant ovSumme;
        rs.GetFieldValue("SummeD", ovSumme);
    
        m_Woche = ovSumme.dblVal;
    
        UpdateData(FALSE);
    

    MfG



  • Ich danke dir über alles! Genau das wars!
    Ich hatte es irgendwann schon mal probiert. Da war aber bestimmt noch irgendwas falsch, weswegen es da nicht geklappt hatte. Naja, ist jetzt auch egal!

    Jetzt kann ich endlich weitermachen...

    Danke nochmal für deine Geduld! 👍


Anmelden zum Antworten