CRecordset - Gegenteil von GetFieldValue???
-
Hallo Forum,
ich habe mal wieder eine Frage zu meinem momentanen "Lieblingsthema" und habe mir schon die Fingerkuppen Weggegoogelt.
Gibt es für CRecordset (ODBC) einen Befehl (kein SQL) mit dem es mir möglich ist ein Feld zu füllen. Sprich das Gegenteil von GetFieldValue.
//Dies ist die 1. (mir bekannte) Möglichkeit sich den Inhalt zu holen KUNDEN.GetFieldValue("Kunde",InhaltVonKunde); //Dies ist eine Möglichkeit ein Feld zu füllen (will ich aber nicht) KUNDEN.Edit(); KUNDEN.m_KUNDE=NeuerInhaltFürKunde; KUNDEN.Update(); //Und dies wäre die SQL Lösung DB.ExecuteSQL(UPDATE Tabelle SET 'Neuer Inhalt' WHERE Kunden='Alter Inhalt');Alles ganz nett was ich allerdings bräuchte wäre etwas wie:
KUNDEN.Edit(); KUNDEN.SetFieldValue("Kunde", NeuerInhalt); KUNDEN.Update();Also etwas wo ich die Möglichkeit habe den Spaltennamen Variabel zu setzen, ohne Ihn vorher zu deklarieren.
m_KUNDE = ""; m_nFields = 1; RFX_Text(pFX, _T("[Kunde]"), m_KUNDE, 2500);Also, zurück zu meiner Frage. Gibt es ein Äquivalent zu GetFieldValue, also eine Art SetFieldValue???

Vielen lieben Dank,
JulianB.
IDE: MS Visual Studio .NET 2003
DB: MS SQL Server
OS: MS XP Professional
-
Keiner???
Kennt da Niemand eine Möglichkeit??? Oder ist die Frage einfach zu doof???
Klärt mich bitte auf...Liebe Grüße,
Julian
-
JulianB schrieb:
Oder ist die Frage einfach zu doof???
Vielleicht liegt es daran das du nicht das richtige Forum gewählt hast? Zudem muss nicht zwangsweise sofort jemand Zeit haben eine Antwort zu tippen.
Bezüglich des Forums gehe ich aber mal davon aus das du noch Verschoben wirst. Nach dem Bezeichner CRecordset tippe ich jetzt mal auf MFC oder ggf. C++/CLI.
cu André
-
asc schrieb:
JulianB schrieb:
Oder ist die Frage einfach zu doof???
Zudem muss nicht zwangsweise sofort jemand Zeit haben eine Antwort zu tippen.
Entschuldige, aber ich bin ein wenig unter Strom wegen der Sache, wenn man sich 14 Std. mit ein und demselben Thema beschäftigt und es geht einfach nicht vorwärts, wird man, Ich zumindest, ein wenig ungeduldig.
Ich wollte nicht hetzen, ich hoffe Ihr versteht das.

Wegen dem Verschieben, wenn ich wirklich im falschen Forum bin (wie peinlich) dann bitte verschiebt mich ^^

Liebe Grüße
-
Hallo,
JulianB schrieb:
Keiner???
Kennt da Niemand eine Möglichkeit??? Oder ist die Frage einfach zu doof???
Klärt mich bitte auf...Liebe Grüße,
Julian
Doch, sicher kennt irgendeiner eine Antwort (das ist das Motto dieses Forums
), aber wahrscheinlicher dann, wenn im richtigen Forum gefragt wird.Zum Thema: Zitat aus der MSDN-Doku:
Unlike the DAO class CDaoRecordset, CRecordset does not have a SetFieldValue member function. If you create an object directly from CRecordset, it is effectively read-only.
Man könnte z.B. direkt SQL-Update-Anweisungen absetzen, um eine Feldaktualisierung zu erreichen.
MfG,
Probe-Nutzer
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Okay okay ihr habt gewonnen, ich ergebe mich
, es tut mir leid ich gelobe Besserung hinsichtlich meiner Geduld und der Forenwahl
.Probe-Nutzer schrieb:
Zitat aus der MSDN-Doku:
Unlike the DAO class CDaoRecordset, CRecordset does not have a SetFieldValue member function. If you create an object directly from CRecordset, it is effectively read-only.
Man könnte z.B. direkt SQL-Update-Anweisungen absetzen, um eine Feldaktualisierung zu erreichen.
Ja, SQL ist mir bekannt, ich wollte eigentlich SQL vermeiden, wenn möglich. Ist es aber anscheinend ja nicht! Und leider bin ich an CRecordset gebunden (ich gebs zu ich habe von DAO auch noch weniger, also garkeine, Ahnung als von CRecSet).
Hmpf, na gut dann SQL *fluch*
.Vielen Dank,
Julian.
-
SQL vermeiden? SQL ist grad der kern der Datenbanken....
nimm doch ADO statt DAO;)
KUNDEN ist der Recordset nehm ich an
Normal kannst direkt auf ein Feld mit em () operator zugriefen
COleVariant obj; obj= KUNDEN("Kunde");sor irgendwie, bin mir aber nich mehr siche rist länger her-.
-
Ich verstehe trotzdem Dein Problem nicht. Du kanst doch die RecordSet member direkt nehmen und die Daten verändern.
Dynamische Datenbindung (wenn es Dir darauf ankommt) findest Du hier im DYNABIND Sample
http://msdn.microsoft.com/en-us/library/aa728900(VS.71).aspxAnsonsten MSDN lesen bzgl. Updates:
http://msdn.microsoft.com/en-us/library/aa295249(VS.60).aspx
-
Also mein Problem sieht folgendermaßen aus:
Ich lese mittels eines Perl-Skriptes (ich !musste! Perl nehmen) Daten aus einer bestimmten Datei aus, u.a. einen Datenbanknamen, die Zugangsdaten, Spaltennnamen und eine Anweisung wie Sort, Replace, Edit, etc.)
Diese Anweisungen führe ich mittels eines C++ Programms aus. Dazu übernehme ich aus Perl die Zugangsdaten und eben auch die Spaltennamen, etc.
Diese Spaltennamen variieren natürlich von Datei zu Datei, deswegen dachte ich, ich benutze GetFieldValue(Spaltenname, NeuerInhalt);. Denn so kann ich die in strings gespeicherten Spaltennamen einfach in den Befehl einbauen:
string Spaltenname; //Vom Perl-Skript übergeben string AlterInhalt; string NeuerInhalt; [...] Kunden.Open(); Kunden.GetFieldValue(Spaltenname, AlterInhalt); [...] [...] Kunden.SetFieldValue(Spaltenname, NeuerInhalt);Daher mein Set-Problem ^^. Und nun suche ich nach einer Lösung das ich die Spalten Updaten bzw. Editieren kann OHNE das ich vorher im C++Script deklarieren muss wie diese heißen.
Ich hoffe es ist einigermaßen rübergekommen was ich möchte.
Liebe Grüße,
Julian
-
Dann solltest Du auf ADO umschwenken!
Aber einwurf:
1. Kennst Du die Splatennamen, denn Du hast ja den Query aufgebaut.
2. Hast Du Dir Dynabind angesehen?