Ein Problem mit einer SqlAbfrage
-
Ich führe folgenden Abfrage mit CDao aus:
SELECT Agenten.Name, Suchparameter.Preis_min_real, Suchparameter.Preis_max_real, Suchparameter.EZ, Suchparameter.IDNr, NZ([Anzahl von Link],0) AS Anzahl_gefunden, Agenten.Aktiv FROM ((Links RIGHT JOIN Suchparameter ON Links.gefundenVon = Suchparameter.IDNr) INNER JOIN (Agent_Suchparameter_Link INNER JOIN Agenten ON Agent_Suchparameter_Link.Agent_Nr = Agenten.AgentNr) ON Suchparameter.IDNr = Agent_Suchparameter_Link.Sp_Nr) LEFT JOIN Abfrage14 ON Agenten.AgentNr = Abfrage14.Agent_Nr GROUP BY Agenten.Name, Suchparameter.Preis_min_real, Suchparameter.Preis_max_real, Suchparameter.EZ, Suchparameter.IDNr, Agenten.Aktiv, Abfrage14.[Anzahl von Link], Suchparameter.Priorität ORDER BY Agenten.Name, Suchparameter.Priorität DESC;");Anzahl Links kommt aus Abfrage14 und liefert die Anzahl die eine bestimmte Bedingung erfüllen zurück.
Nun zu meinen Problem wenn ich die Abfrage in Access ausführen habe ich keine Probleme ,aber wenn ich sie über CDao ausführe kennt er NZ plötzlich nicht mehr.Wenn ich NZ weglasse kriege ich überall wo die Anzahl = NULL ist die IDNr geliefert.
So gebe ich die Daten aus:
while(!r->IsEOF()) { ... r->GetFieldValue(0,val); CString in =val.pbVal; in.Replace("--2","-"); int q = parent->m_SP.InsertItem(r->GetAbsolutePosition(),in); if(parent->m_SP.GetStringWidth(in)>parent->m_SP.GetColumnWidth(0)) { parent->m_SP.SetColumnWidth(0,parent->m_SP.GetStringWidth(in)+10); } for(int i=1;i <= 5;i++) { val.Clear(); r->GetFieldValue(i,val); in = ""; in.Format("%d",val.lVal); if(i< 3) { in = Format_Preis(in); } parent->m_SP.SetItemText(q,i,in); if(parent->m_SP.GetStringWidth(in)>parent->m_SP.GetColumnWidth(i)&& i!=4) { parent->m_SP.SetColumnWidth(i,parent->m_SP.GetStringWidth(in)+10); } parent->m_SP.SetColumnWidth(4,0); } pos++; r->MoveNext(); }
-
Hab es selbst rausgefunden.COleVariant::Clear hat val überhaupt nicht geleert.Ich habe jetzt val.lVal auf 0 gesetzt