m_strFilter
-
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...
-
kann mir zwar nciht vorstellen dass es was mit dem Aufruf zu tun hat, da ich ja mit dem Debugger schaue und sie sich noch vor dem Aufruf ändert. Aber ich poste de Source mal der Masterin!!
int selectedMNR; void CMy2dbView::OnBtnSelect() { CDBVariant varValue; CBoundaryView test; short index =3; m_pSet->GetFieldValue( index, varValue); selectedMNR = varValue.m_lVal; AfxGetMainWnd()->SendMessage(WM_COMMAND, IDM_SWITCHTO2); }
oben ist die globale Varialble, so geht es auch wenn ich jetzt statt int selectedMNR; eine member verwende kackt er ab.
Ich will die Member mit einer get Funktion dann in ner anderen Klasse verwenden.int CMy2dbView::getSuche() { return selectedMNR; }
ich mach dann in der anderen Klasse (anderes View)
CMy2dbView such; int MNR = such.getSuche();
So jetzt du!!
-
Und du hast WIEDER eine LOKALE Variable von deinem View angelegt.
Ich habe keine Ahnung, warum das mit einer globalen Variablen geht - sowas nutze ich fast nie. Wenn, dann war es Bestandteil einer fertigen Lösung...
Du musst dir entweder einen Zeiger auf den eigentlichen View besorgen, oder du gibst das hoch an die App (die ist prima als Speicher für dauernd und überall benötigte Sachen) oder du läßt es wie es ist.
...warum sich die Variable ändert, weiß ich jetzt erst recht nicht mehr - da du ja mit einer völlig anderen Instanz des View arbeitest.
-
OK ich wollte es gerade eben auf die schönere Art mit dem Pointer machen, aber dabei habe ich alles so durcheinander gewürfelt dass gar nichts mehr geht, und ich zum schluss gekommen bin, dass ich es einfach so lasse. Das ich immer so tolle lokale Variablen des Views nehme kommt wohl daher dass mir (bis vor kurzem) niemand gesagt hat, dass das so scheiße ist. Und ao wie ich es mache geht es ja auch, drum war ich nie auf der Suche nach ner besseren Lösung. Mittlerweile ist es einfach schon Angewohnheit. Trotzdem danke dass du so viel Nerven mit mir hast
-
Kein Problem, ich weiß ja langsam, wo ich suchen muss.
Vielleicht hat es bis vor kurzem auch einfach deswegen geklappt, weil du das noch nicht so genutzt hast.
-
Hm mag sein, dürfen ja an der FH leider nur VI oder so verwenden nichts mit ner richtigen Entwicklungsumgebung!
Werde mir jetzt aber mal deine Tips nochmal durchschauen, und versuchen nen schöneren Stil zu proggen Danke dir auf jeden Fall.
-
Ihr proggt ODBC-Datenbank anbindungen mit dem VI ohne richtige IDE?!? Ich meine nix gegen den VI, damit kann man viel anstellen, aber zum programmieren nehm ich ja auch nicht edit.exe
(ich weiss das der VI viel mehr drauf hat, kann damit auch nen bissel umgehen) Aber ne IDE mit SyntaxHighlight und CodeVervollständigung und debugger erleichtert die Arbeit und Fehlersuche doch sehr..
Auf Linux? oder Unix? oder was?!?
Mir fällt zudem auf, das dir irgendwie ziemlich die Grundlagen fehlen, zum einen was c/c++ angeht (zuweisungen, konvertierungen, scopes) zum anderen SQL-Queries.. Vielleicht solltest du mal 1-2 Tage darin investieren SQL zu lernen (is wirklich nicht schwer) und dann nen C++ Buch lesen..
Soll jetzt nicht böse gemeint sein, aber bei fragen wie: Wie bekomme ich nen int in nen string, das sind absolute basics..
-
VI, mich grausts - ich muss zu dem neuerdings hin und wieder Hilfestellung geben (Configdateien editieren und kein anderer Editor ist da), da komme ich ohne meine Mappe nicht weit.
Ich vermute eher mal, dass an der FH reines C++ gemacht wird und dass er zu Hause schon mal was "weiterführendes" machen möchte.
Das sind nämlich so die typischen Sachen, die einen erwischen, wenn man sich MFC alleine beibiegt.Wenn ich überlege, wie sich mein einer Kollege (der, dem ich immer ein Loch in den Bauch gefragt habe), immer die Haare gerauft hat, wenn er meinen code gelesen hat.
Funktioniert hat es meistens - aber es war weder erweiterbar, noch wüßte ich heute, was ich mir dabei gedacht hatte.