m_strFilter



  • Genau, das, was du da hast, bedeutet so viel wie
    ...WHERE Nachname = ''
    bzw.
    ...WHERE Nachname IS NULL

    Ist aber immernoch kein leerer String im Filter (steht ja was drin)...



  • OK gut hast ja recht aber wie geht es denn nun?? IN der MSDN steht dass man als Spaceholders ? verwenden kann aber auch '?' geht nicht kann ich irgendwie mit * arbeiten oder mach ich das mit dem ? falsch? kann mir nicht jemand schnell ne Zeile schreiben die mir alle Datensätze wieder anzeigt??



  • m_pSet->m_strFilter = "";
    


  • Boa scheiße jetzt geht er!
    Danke Vielmals hat mir sehr geholfen.

    mfg Polofreak



  • nur mal ganz allgemein, man kann der Open-Methode auch einen SQL-string uebergeben:

    CString strSQL = "SELECT * FROM TABLENAME WHERE SPALTENNAME = deinWert;";
    
    poDBRecord->Open(CRecordset::snapshot, strSQL);
    

    Esco



  • MSDN schrieb:

    A string pointer containing one of the following:
    - A NULL pointer.
    - The name of a table.
    - A SQL SELECT statement (optionally with a SQL WHERE or ORDER BY clause).
    - A CALL statement specifying the name of a predefined query (stored procedure). Be careful that you do not insert whitespace between the curly brace and the CALL keyword.



  • Man kann auch Proceduren aufrufen? 😮
    Super, ich bin gerettet! Danke! 👍



  • hm das mit der SQL-Anfrage geht bei mir nicht wirklich!
    Hab es so probiert

    void CDatabaseView::OnBTNSQL() 
    {
    	LPCTSTR strSQL = "SELECT * FROM Anrufe"; 
             //vorhandenes Recorset schließen
    	m_pSet->Close();
             //erneut mit SQL string öffnen
    	m_pSet->Open(CRecordset::snapshot, strSQL);		
    }
    

    Dann bringt er mir immer Ungültiger Deskriptor Index. (Hat das was mit dem SP zu tun?) Hab auf der MS HP gelesen dass es in Excel zu nem Problem kommen kann wo er diese Meldung bringt. muss ich mir jetzt das SP3 ziehen?? 😕



  • Tja hab echt lange gegoogelt, die einen meinen es sein ein Bug von VC++, mann muss die Klasse einfach neu anlegen wenn das nicht klappt als DAO andere sagen bekommt man gar nicht weg andere sagen es kommt darauf an wie man es ausliest, da man in der gleichen Reihenfolge auslesen muss wie in der SQL-query (ich les noch gar nicht aus) und so weiter aber meine erste Vermutung mit dem SP kann glaub ich nicht sein denn das ist alles nur immer für exel ich hab ja aber Access als DB laufen.

    Wenn jemandem was zu falschen Deskriptor Indexen einfällt bitte schreiben.

    Aber dank euch allen für eure Bemühungen



  • Ok wenn zum Beitrag eins weiter oben niemand eine Ahnung hat dann aber wahrscheinlich zu diesem neuen Problem.
    einen m_strFilter. Ich will nach einer Variablen Zahl Filtern also nach ner int Variable.

    m_pSet->m_strFilter =  "Maschinennummer = hierdie in Variable";
    

    kann mir da jemand die Zeile kurz schreiben und wenn '"?+ o.ä. drin vorkommen bitte kurz erklären warum und wieso die da stehen



  • warum guckst du da nicht in ein SQL-tutorial ??
    aber ok ...

    m_pSet->m_strFilter =  "Maschinennummer = \"*\"";
    

    für den SQL-Server heißt das das hier:

    Maschinennummer = "*"
    

    und das stern bedeutet wie du sicherlich ahnen kannst, da kann stehen was will 😉 (bin mir auch ziemlich sicher das auch eine leere zeichenfolge in die ergebniss tabelle aufgenommen wird)

    Edit:
    sorry, das du nach Integer suchst hab ich übersehen, da musste die gänsefüßchen natürlich weg lassen



  • Suchst du nicht eher sowas?

    long lID = 5;
    m_pSet->m_strFilter.Format(_T("ID = %d"), lID);
    

    Da würde dann für den SQL-Server stehen:

    ID = 5
    


  • Polofreak schrieb:

    Ich will nach einer Variablen Zahl Filtern also nach ner int Variable.

    für mich hört sich das nach einer art antowrt nach dem was ich geschrieben hab an :D;)

    oder nicht ??



  • estartu_de schrieb:

    Suchst du nicht eher sowas?

    long lID = 5;
    m_pSet->m_strFilter.Format(_T("ID = %d"), lID);
    

    Da würde dann für den SQL-Server stehen:

    ID = 5
    

    genau das habe ich gesucht.
    Vielen Dank



  • ahhh, nein. der polofreak hat entschieden. ich nehme alles zurück ^^ 😉



  • *gg* Aber dir auch herzlichen Dank Skall für die schnelle Antwort vielleicht hab ich mich nicht richtig ausgedrückt. Aber die Realität zeigt man konnte mich verstehen 😉



  • daran wirds liegen 😉



  • hm noch en Frage zu getField Value. Erst mal Source:

    CDBVariant varValue;
    	short index =0;
             m_pSet->GetFieldValue( index, varValue);		  
             m_MaschinenNR =varValue.m_lVal;
    

    So sieht des aus. Nur versteh ich des nciht so richtig wo kann ich jetzt wirklich auswählen welches Field ich eigentlich will. Index dachte ich sei Zeilennummer und in VarValue steht der Spaltenname aber wie kann ich dem was zuweisen, da steht immer ein scheiß drin!
    Danke schon mal im Voraus!



  • Okay, da bin ich nicht so firm - ich versuchs trotzdem mal:
    Index ist die SPALTENnummer.
    In den Zeilen bewegst du dich mit den Funktionen, die mit Move anfangen. 🙂

    Du kannst, wenn sich die Spalten des Recordset nicht ändern, aber auch mit DoFieldExchange arbeiten. Das geht einfacher.



  • OK bringt mich schon mal ein Stück weiter aber

    void CMy2dbView::OnBtnSelect() 
    {
    	CDBVariant varValue;
    
    				m_pSet->MoveFirst();
    				short index =3;
    				m_pSet->GetFieldValue( index, varValue);
    
    			      m_MaschinenNR =varValue.m_lVal;
    
    	AfxGetMainWnd()->SendMessage(WM_COMMAND, IDM_SWITCHTO2);
    
    }
    

    Bis zur letzten Zeile steht der richtige Wert drin dann die letzte Zeile und der Wert kotzt voll ab! Warum?? wenn ich die andere View öffne dann mache ich ja nichts mit der Membervariable!


Anmelden zum Antworten