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


Anmelden zum Antworten