PDA

Vollständige Version anzeigen : CDao ich denke irgendwas bleibt offen


Andorxor
12.11.2003, 09:57
Wenn ich einen Dialog 8.mal aufrufe der aus einer Access97DB mit Daten gefüllt wird stürzt mein Programm mit einen Dao Fehler ab.Da der Fehler auftritt ohne das ich den Dialog nochmal aufrufe oder Daten mit den Dialog zuverändern muss wohl irgendwas offen blieben.

COleVariant val;
CString b;
b = m_SP.GetItemText(item,4);
CDaoRecordset * r4;
int ran4;
DB.recordset_type= dbOpenSnapshot;
DB.recordset_options=dbReadOnly;
ran4 = DB.AddRecordset("SELECT Suchparameter.*, Agenten.use_empty_ez, Kategorien.Name AS Kat_Nam, Marken.Name AS Mar_Nam,
Farben.Name AS Far_Nam, Modelle.Modell_Name, Agenten.Name AS Agt_Nam
FROM ((((Kategorien INNER JOIN (Marken INNER JOIN Suchparameter ON Marken.intern_MarkenNr = Suchparameter.Marke) ON
Kategorien.intern_KategorieNr = Suchparameter.Kategorie) INNER JOIN Farben ON Suchparameter.Farbe = Farben.intern_Farbnr) LEFT JOIN
Modelle ON Suchparameter.Modell = Modelle.Modell_Nr) INNER JOIN
Agent_Suchparameter_Link ON Suchparameter.IDNr = Agent_Suchparameter_Link.Sp_Nr) INNER JOIN Agenten ON
Agent_Suchparameter_Link.Agent_Nr = Agenten.AgentNr WHERE
Suchparameter.IDNr=" + b);//Öffnet die DB wenn sie geschlossen ist und speichert das Recordset in einen Array
r4= DB.GetRecordset(ran4);//Liefert das Recordset mit den übergebenen Index
DB.recordset_options = 0;
DB.recordset_type = dbOpenDynaset;
r4->GetFieldValue("Modell_Name",val);
dia.m_Modell = val.pbVal;
if(dia.m_Modell =="Suchparameter")
{
dia.m_Modell ="";
}
//Speicher die Booleans in ein Array mit dem später die Radiobuttons gefüllt werden
for(int i2 =0;i2 <11;i2++)
{
r4->GetFieldValue(16+i2,val);
if(val.boolVal)
{
dia.rad_array[i2] = 1;
}
else
{
dia.rad_array[i2] =0;
}
}
r4->GetFieldValue("Kat_Nam",val);
dia.m_Kategorie=val.pbVal;
DB.returnRecordset(ran4);//Teilt der Klasse mit das das Recordset nicht mehr genutzt wird
DB.DeleteRecordset(ran4);//Schliesst und löscht das Recordset
dia.DoModal();
change_Agent(dia.m_ID,dia.m_aktiv,dia.m_agent_name);
if(ListStatus ==2)
{
ListStatus =1;
OnButton2();
}
*pResult = 0;

Andorxor
13.11.2003, 10:53
Habs gefunden in changeAgent wurde ein Recordset nicht geschlossen