Problem mit DISTINCT



  • Zu allererst: Programmiersprach ist vc++....
    Ich würde gerne anstatt einem festgelegten Wert eine Variable benutzen.

    COleVariant olevar;
    CString column = "Pruefungsfach_4";
    recordset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT DISTINCT Pruefungsfach_4 FROM Tabelle1", 0);
    
    		while(!recordset.IsEOF())
    			{
    			recordset.GetFieldValue("Pruefungsfach_4", olevar);
    
    			CString strData = (LPCSTR) olevar.pbstrVal;
    			if (strData.GetLength() != 0) 
    				{
    				p_strAryKurs->Add(strData);
    				}
    			recordset.MoveNext();
    			}
    

    Ich würde gerne wie hier schon ersichlich anstatt Pruefungsfach_4 die Variable column einsetzten...

    Wenn ich es so verschuche, compiliert er mir es zwar aber es kommt beim Ausführen der Funktion eine msgBox mit folgendem Fehler: "Element in dieser Auflistung nicht gefunden"

    ...
    CString column = "Pruefungsfach_4";
    recordset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT DISTINCT '"+column+"' FROM Tabelle1", 0);
    
    	while(!recordset.IsEOF())
    		{
    		recordset.GetFieldValue(column, olevar); //hier kommt dann der Fehler, wenn ich einen Haltepunkt setze
    		...
            }	
    ...
    

    Vielen Dank schonmal für eure Mühe!

    Chris

    PS: Hoffe ich hab das ins richtige Forum gepostet... 🙄



  • hast du mal ohne hochkommas probiert?
    ansonsten lass mal die sql-anweisung ausgeben, und führe die so aus.



  • Habe schon alle möglichen Dinge versuch...

    Bin grade eben auf ne Lösung gekommen: Er konnte mit diesem "Teilstring" nichts anfangen also hab ich es folgendermaßen gelöst:

    void CPlanerTestDlg::GetKurs(CStringArray* p_strAryKurs, CString column)
    	{
        ...
    	CString SqlCmd;
    	COleVariant olevar;
    
    	SqlCmd.Format("SELECT DISTINCT %s FROM Tabelle1", column);
    	recordset.Open(AFX_DAO_USE_DEFAULT_TYPE, SqlCmd, 0);
    
    		while(!recordset.IsEOF())
    			{
    			recordset.GetFieldValue(column, olevar);
    			CString strData = (LPCSTR) olevar.pbstrVal;
    			if (strData.GetLength() != 0) 
    				{
    				p_strAryKurs->Add(strData);
    				}
    			recordset.MoveNext();
    			}
    		db.Close();
    		recordset.Close();
        }
    

    Gruß

    Chris


Anmelden zum Antworten