m_strFilter



  • 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!



  • Definiere bitte:

    Polofreak schrieb:

    Bis zur letzten Zeile steht der richtige Wert drin dann die letzte Zeile und der Wert kotzt voll ab!

    Du solltest dir aber mal zwei nette Funktionen anschauen: IsEOF und IsBOF 🙂



  • Nein moment ich habe mich mal wieder sehr missverständlich ausgedrückt! Mit letzter Zeile meinte ich die letzte Sourcezeile die ich oben geschrieben hab.
    Also:

    AfxGetMainWnd()->SendMessage(WM_COMMAND, IDM_SWITCHTO2);
    

    wenn ich Step by Step mit dem Debugger durchgehe, dann bekomm ich immer bei oben genannter Zeile einen Scheiß Wert in meine Membervariable. Also m_MaschinenNR ist immer der richtige Wert drin dann kommt

    AfxGetMainWnd()->SendMessage(WM_COMMAND, IDM_SWITCHTO2);
    

    Und jetzt steht ein Scheiß drin.
    Klar?? 😕 😕



  • Verstanden habe ich es jetzt, aber keine Idee.

    Treten denn damit verbundene Fehler auf?
    Ist es die einzige Variable, die sich ändert?

    Bist du ganz sicher, dass du nirgends zugreifst? Setz mal auf ALLE Zugriffe einen Breakpoint und guck nochmal. 🙂



  • Also ich hab jetzt die ganze Zeit noch dran rum geeiert und mittlerweile hab ich raus gefunden, wenn ich es mit einer member mache dann geht es nicht wenn ich es mit einer global deklarierten Variable mache, dann geht es. Also auf gut deutsch es geht jetzt. Wenn dir aber einfallen sollte woran sowas liegen könnte, dann kannst ja nochmal schreiben. Und übrigens nein es treten sonst keine Fehler damit auf, ich frag diese Variable in nem anderen view auf und da gibt er mir dann ne ganz komische Zahl einfach aus.



  • Polofreak schrieb:

    Und übrigens nein es treten sonst keine Fehler damit auf, ich frag diese Variable in nem anderen view auf und da gibt er mir dann ne ganz komische Zahl einfach aus.

    Da du an der Stelle schon mehrfach einen Fehler hattest: Zeig bitte, wie du sie aufrufst. Nicht, dass du eine unintialisierte Variable in einem "lokalen" View hast. 😉
    Sehr komische Zahlen sind nämlich oft Speichermüll.

    Globale Variable... naja, wenns nicht zu oft vorkommt und deutlich vermerkt wird... 🙄


Anmelden zum Antworten