C++ Daten aus der Datenbank in die ListControll

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.103
naja das ist für mich alles neue deswegen wunder euch nicht dass da irgendwie falsch programmiert worden ist. hab paar sachen aus dem netz einfach mit c&p gemacht.

hab folgende Methode in meine Hauptklasse

Code:
bool CXXX::GetSQLData(CString query)
{
        //query = _T("select * from test"); testdatenbank existiert. und es gibt auch keine Verbinsungsfehler
	int len = query.GetLength();
	if(len < 15)		//Überprüft ob der String nicht zu Kurz für ein SQL ist
	{
		return false;
	}
	LVITEM lvItem;
	int nItem;
	CString Wert;

	CDatabase db;
	if(!db.IsOpen())
	{
		if(db.OpenEx(this->GetDefaultConnect(), CDatabase::openReadOnly))
		{
			CRecordset rs( &db );
			rs.Open(this->dynaset,query, this->readOnly);

			int count = rs.GetODBCFieldCount();
			while(!rs.IsEOF()) //Schon klar, kein Begin of File ^^ blöder beispiel... muss !EOF sein
			{
				for( int i = 0; i < count; i++ ) {
					rs.GetFieldValue( i, Wert );
					lvItem.mask = LVIF_TEXT;	//Aus dem Netz
					lvItem.iItem = 0;
					lvItem.iSubItem = 0;
					lvItem.pszText = (LPTSTR)(LPCTSTR)Wert;
					nItem = this->m_List.InsertItem(&lvItem);
					if(i>0){
						this->m_List.SetItemText(nItem, (i-1), Wert);	
                                                          //Wert ist schon das richtige... glaub ich
					}
				}
				rs.MoveNext( );
			}
			rs.Close();
			db.Close();
			return true;
		}else{
			return false;
		}
	}
	return false;
}


Na ja wie gesagt... hab mir die sachen aus dem Netz zusammengesucht. Wie man die ListControll alleine vollkriegt ist ja kein problem, aber das mit der Datenbank... hmm da komme ich nicht weiter.

Kennst sich da vielleicht einer aus?


Danke
 
Zuletzt bearbeitet:
Kleiner Update zu dem Code.... also ich habe das mehr oder weniger zum Laufen gebracht.

Nur das Problem ist... wenn ich die Werte jetzt in die Liste reinschreibe bekomme ich irgendwelche koreanische Zeichen.
Hab test mit messagebox gemacht... da werden die Werte richtig angezeigt.

Kennst sich da einer aus? hab ich jetzt konvertierungsprobleme? Mein Projekt ist auf Unicode zeichen. Ist das das Problem?
 
Naja ich habe jetzt herausgefunden, dass wenn man
Code:
this->m_List.SetItemText(nItem, 0, Wert);
erscheint die Liste richtig... ohne irgendwelche Sonderzeichen.
Das problem ist... ein Datensatz, also eine zeile aus der DB sollte auch eine zeile in der List Control sein. ich bekomme statt eine Zeile, eine Spalte.
 
Kurze Bemerkung...

um CString auf LPWSTR zu konvertieren sollte folgendes reichen:

Code:
lvItem.pszText = (LPTSTR)(LPCTSTR)Wert;

habs vorher falsche Konvertierungsmethode benutzt :P
 
Zurück
Oben