Einfache Formulardaten in MS Access Tabellen speichern
-
Meinst Du so?
private: System::Void btnSpeichern_Click(System::Object^ sender, System::EventArgs^ e) {
OleDbDataAdapter1->Update(dataSet11);
}};
}
-
Sofern die Elemente bei Dir diesen Namen haben.
Was hast Du gegen Codetags ?
-
Gar nichts. Wieso? Was sind Codetags?
Ich habe vor ca. einem Monat das Visual Studio 2005 heruntergeladen und habe so oft probiert einfache Daten aus einer Windows Forms Anwendung (Formular) die Daten in einer Access Datenbank zu speichern.
Aber Knuddlbaer oder wie ist Dein Name? Ich werde mir diesen Namen auch speichern und wenn ich später wiedermal Hilfe von einem Profi wie Dir brauche, komme ich einfach auf Dich zu.
Gruss Philipp
-
Es kommen aber Fehler wie diese:
Fehler 1 error C2065: 'OleDbDataAdapter1': nichtdeklarierter Bezeichner 220
Fehler 2 error C2227: Links von "->Update" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
-
Codetags:
int main() { // Das ist ein C++ Kommentar for(int i = 0;i < 10;++i) std::cout::<<i<<std::endl; }
Unter den Smilies findest Du ein Button C/C++ - drück mal drauf, pack Deinen Quellcode dazwischen und klick wieder auf den Button. Dann kann man den Quellcode auch lesen.
Ansonsten: Du musst die Variablen schon beim Namen nennen. Raten können die Compiler noch nicht.
-
Hallo Knuddlbaer
Besten Dank für alles. Ich habe bemerkt, dass ich den OleTableAdapter1 falsch geschrieben habe.
Wenn ich jetzt das Progrämmchen debugge bekomme ich wenigstens keine Fehlermeldungen mehr. Auch wenn ich die Daten jetzt ins Formular eingebe und auf den Button "speichern" klicke, verschwindet das Eingegebene. Und wenn ich meine AccessDB öffne um zu schauen, ob es wirklich gespeichert wurde Gähnende Leere.
Auch habe ich eine neue Datei auf dem Laufwerk, die den selben Namen trägt wie meine AccessDB mit der Endung *.ldb, welche ich mit dem Access nicht öffnen kann.
Kannst Du mir bitte nochmals helfen?
Danke und Gruss
-
Zeig mal den Quellcode der hinter Deinem Knopf liegt.
-
#pragma once namespace probieren { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Zusammenfassung für Form1 /// /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch /// die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern, /// das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt. /// Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen /// arbeiten, die diesem Formular zugewiesen sind. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::Label^ label1; protected: private: System::Windows::Forms::TextBox^ txtName; private: System::Windows::Forms::Label^ label2; private: System::Windows::Forms::TextBox^ txtVorname; private: System::Windows::Forms::DateTimePicker^ dateTimePicker1; private: System::Windows::Forms::Label^ label3; private: System::Windows::Forms::Button^ btnSpeichern; private: System::Data::OleDb::OleDbCommand^ oleDbSelectCommand1; private: System::Data::OleDb::OleDbConnection^ oleDbConnection1; private: System::Data::OleDb::OleDbCommand^ oleDbInsertCommand1; private: System::Data::OleDb::OleDbDataAdapter^ oleDbDataAdapter1; private: probieren::DataSet1^ dataSet11; private: System::Data::DataView^ dataView1; private: System::Windows::Forms::BindingSource^ testDBAdministrationBindingSource; private: System::Windows::Forms::BindingSource^ testDBAdministrationBindingSource1; private: System::Windows::Forms::BindingSource^ testDBAdministrationBindingSource2; private: System::ComponentModel::IContainer^ components; private: /// <summary> /// Erforderliche Designervariable. /// </summary> #pragma region Windows Form Designer generated code /// <summary> /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// </summary> void InitializeComponent(void) { this->components = (gcnew System::ComponentModel::Container()); this->label1 = (gcnew System::Windows::Forms::Label()); this->txtName = (gcnew System::Windows::Forms::TextBox()); this->dataSet11 = (gcnew probieren::DataSet1()); this->label2 = (gcnew System::Windows::Forms::Label()); this->txtVorname = (gcnew System::Windows::Forms::TextBox()); this->dateTimePicker1 = (gcnew System::Windows::Forms::DateTimePicker()); this->label3 = (gcnew System::Windows::Forms::Label()); this->btnSpeichern = (gcnew System::Windows::Forms::Button()); this->oleDbSelectCommand1 = (gcnew System::Data::OleDb::OleDbCommand()); this->oleDbConnection1 = (gcnew System::Data::OleDb::OleDbConnection()); this->oleDbInsertCommand1 = (gcnew System::Data::OleDb::OleDbCommand()); this->oleDbDataAdapter1 = (gcnew System::Data::OleDb::OleDbDataAdapter()); this->dataView1 = (gcnew System::Data::DataView()); this->testDBAdministrationBindingSource = (gcnew System::Windows::Forms::BindingSource(this->components)); this->testDBAdministrationBindingSource1 = (gcnew System::Windows::Forms::BindingSource(this->components)); this->testDBAdministrationBindingSource2 = (gcnew System::Windows::Forms::BindingSource(this->components)); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataSet11))->BeginInit(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataView1))->BeginInit(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->testDBAdministrationBindingSource))->BeginInit(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->testDBAdministrationBindingSource1))->BeginInit(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->testDBAdministrationBindingSource2))->BeginInit(); this->SuspendLayout(); // // label1 // this->label1->AutoSize = true; this->label1->Location = System::Drawing::Point(24, 27); this->label1->Name = L"label1"; this->label1->Size = System::Drawing::Size(35, 13); this->label1->TabIndex = 0; this->label1->Text = L"Name"; // // txtName // this->txtName->DataBindings->Add((gcnew System::Windows::Forms::Binding(L"Text", this->testDBAdministrationBindingSource, L"Name", true))); this->txtName->Location = System::Drawing::Point(103, 24); this->txtName->Name = L"txtName"; this->txtName->Size = System::Drawing::Size(100, 20); this->txtName->TabIndex = 1; // // dataSet11 // this->dataSet11->DataSetName = L"DataSet1"; this->dataSet11->SchemaSerializationMode = System::Data::SchemaSerializationMode::IncludeSchema; // // label2 // this->label2->AutoSize = true; this->label2->Location = System::Drawing::Point(24, 53); this->label2->Name = L"label2"; this->label2->Size = System::Drawing::Size(49, 13); this->label2->TabIndex = 2; this->label2->Text = L"Vorname"; // // txtVorname // this->txtVorname->DataBindings->Add((gcnew System::Windows::Forms::Binding(L"Text", this->testDBAdministrationBindingSource1, L"Vorname", true))); this->txtVorname->Location = System::Drawing::Point(103, 50); this->txtVorname->Name = L"txtVorname"; this->txtVorname->Size = System::Drawing::Size(100, 20); this->txtVorname->TabIndex = 3; // // dateTimePicker1 // this->dateTimePicker1->CustomFormat = L"dd.MM.yyyy"; this->dateTimePicker1->DataBindings->Add((gcnew System::Windows::Forms::Binding(L"Text", this->testDBAdministrationBindingSource2, L"Geburtstag", true))); this->dateTimePicker1->Format = System::Windows::Forms::DateTimePickerFormat::Custom; this->dateTimePicker1->Location = System::Drawing::Point(103, 76); this->dateTimePicker1->Name = L"dateTimePicker1"; this->dateTimePicker1->Size = System::Drawing::Size(100, 20); this->dateTimePicker1->TabIndex = 4; // // label3 // this->label3->AutoSize = true; this->label3->Location = System::Drawing::Point(24, 80); this->label3->Name = L"label3"; this->label3->Size = System::Drawing::Size(73, 13); this->label3->TabIndex = 5; this->label3->Text = L"Geburtsdatum"; // // btnSpeichern // this->btnSpeichern->Location = System::Drawing::Point(82, 113); this->btnSpeichern->Name = L"btnSpeichern"; this->btnSpeichern->Size = System::Drawing::Size(75, 23); this->btnSpeichern->TabIndex = 6; this->btnSpeichern->Text = L"Speichern"; this->btnSpeichern->UseVisualStyleBackColor = true; this->btnSpeichern->Click += gcnew System::EventHandler(this, &Form1::btnSpeichern_Click); // // oleDbSelectCommand1 // this->oleDbSelectCommand1->CommandText = L"SELECT Name, Vorname, Geburtstag\r\nFROM Test_DB_Administration"; this->oleDbSelectCommand1->Connection = this->oleDbConnection1; // // oleDbConnection1 // this->oleDbConnection1->ConnectionString = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\AccessDB\\test_db.mdb"; // // oleDbInsertCommand1 // this->oleDbInsertCommand1->CommandText = L"INSERT INTO `Test_DB_Administration` (`Name`, `Vorname`, `Geburtstag`) VALUES (\?," L" \?, \?)"; this->oleDbInsertCommand1->Connection = this->oleDbConnection1; this->oleDbInsertCommand1->Parameters->AddRange(gcnew cli::array< System::Data::OleDb::OleDbParameter^ >(3) {(gcnew System::Data::OleDb::OleDbParameter(L"Name", System::Data::OleDb::OleDbType::VarWChar, 0, L"Name")), (gcnew System::Data::OleDb::OleDbParameter(L"Vorname", System::Data::OleDb::OleDbType::VarWChar, 0, L"Vorname")), (gcnew System::Data::OleDb::OleDbParameter(L"Geburtstag", System::Data::OleDb::OleDbType::Date, 0, L"Geburtstag"))}); // // oleDbDataAdapter1 // this->oleDbDataAdapter1->InsertCommand = this->oleDbInsertCommand1; this->oleDbDataAdapter1->SelectCommand = this->oleDbSelectCommand1; cli::array< System::Data::Common::DataColumnMapping^ >^ __mcTemp__1 = gcnew cli::array< System::Data::Common::DataColumnMapping^ >(3) {(gcnew System::Data::Common::DataColumnMapping(L"Name", L"Name")), (gcnew System::Data::Common::DataColumnMapping(L"Vorname", L"Vorname")), (gcnew System::Data::Common::DataColumnMapping(L"Geburtstag", L"Geburtstag"))}; this->oleDbDataAdapter1->TableMappings->AddRange(gcnew cli::array< System::Data::Common::DataTableMapping^ >(1) {(gcnew System::Data::Common::DataTableMapping(L"Table", L"Test_DB_Administration", __mcTemp__1))}); // // dataView1 // this->dataView1->Table = this->dataSet11->Test_DB_Administration; // // testDBAdministrationBindingSource // this->testDBAdministrationBindingSource->DataMember = L"Test_DB_Administration"; this->testDBAdministrationBindingSource->DataSource = this->dataSet11; // // testDBAdministrationBindingSource1 // this->testDBAdministrationBindingSource1->DataMember = L"Test_DB_Administration"; this->testDBAdministrationBindingSource1->DataSource = this->dataSet11; // // testDBAdministrationBindingSource2 // this->testDBAdministrationBindingSource2->DataMember = L"Test_DB_Administration"; this->testDBAdministrationBindingSource2->DataSource = this->dataSet11; // // Form1 // this->AcceptButton = this->btnSpeichern; this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(238, 150); this->Controls->Add(this->btnSpeichern); this->Controls->Add(this->label3); this->Controls->Add(this->dateTimePicker1); this->Controls->Add(this->txtVorname); this->Controls->Add(this->label2); this->Controls->Add(this->txtName); this->Controls->Add(this->label1); this->Name = L"Form1"; this->Text = L"Form1"; (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataSet11))->EndInit(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->dataView1))->EndInit(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->testDBAdministrationBindingSource))->EndInit(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->testDBAdministrationBindingSource1))->EndInit(); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->testDBAdministrationBindingSource2))->EndInit(); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void btnSpeichern_Click(System::Object^ sender, System::EventArgs^ e) { oleDbDataAdapter1->Fill(dataSet11); } }; }
-
Vorgehensweise
1. Form entwerfen
2. Textfelder umbenenen
3. oleDBTableAdapter1 auf Form ziehen
4. ->konfiguration mit Access DB
5. ->es entsteht eine Dbconnection1
6. oleDBTableAdapter1 ->DataSet generieren
7. DataView1 auf Form1 ziehen
8. DataSet11 in DataView1 beim Table einlesen
9. Textfelder mit (DataBindingSource Text ) ->Form1-Listeninstanzen->DataSet11->MeineAccessDB->Tabellen binden.
10. Doppelklick auf den Button (btnSpeichern) undprivate: System::Void btnSpeichern_Click(System::Object^ sender, System::EventArgs^ e) {
oleDbDataAdapter1->Update(dataSet11);
}
einfügen.
-
Mal abgesehen davon, das Du NUR das Posten solltest was den Code in Deinem Knopf betrifft:
10. Doppelklick auf den Button (btnSpeichern) und
private: System::Void btnSpeichern_Click(System::Object^ sender, System::EventArgs^ e) {
oleDbDataAdapter1->Update(dataSet11);private: System::Void btnSpeichern_Click(System::Object^ sender, System::EventArgs^ e) { oleDbDataAdapter1->Fill(dataSet11); }
Denk mal drüber nach.
-
Mit dem Update "Befehl" passiert leider nichts
-
Oh man... Seit ihr zu zweit ?
private: System::Void btnSpeichern_Click(System::Object^ sender, System::EventArgs^ e) { oleDbDataAdapter1->Fill(dataSet11); }
Wo bitte ist da ein Update ?
-
Nein.
Aber diese Methode "Fill" habe ich jetzt im Einsatz. Es passiert leider nichts, ausser dass es mir ein gleichnamige neue ldb-Datei auf der Festplatte schreibt...
-
Ich bekomme auch beim Debuggen die Warnung "Nicht genügend Platz auf dem Datenträger; Verknüpfung erfolgt nicht inkrementell"
-
1. Ohne Update gibts keine Daten in die Datenbank
2. hast Du die DB zum Projekt hinzugefügt und angeklickt, das diese jedesmal neu kopiert werden soll ? Wo schreibt er Dir denn die neue DB hin ?
-
Das Programm schreibt die "neue" AccessDB- Datei (ldb) ins gleiche Verzeichnis
wie die einzufüllende DB...
-
Wenn ich jetzt die Update Methode wieder einsetze, verschwindet die ldb Datei in meinem Verzeichnis
-
Wenn ich auf oleDBTableAdapter1 klicke, sehe ich in den Eigenschaften, dass der UpdateCommand auf (Keine) ist. Wenn ich die Combobox öffne, habe ich "Vorhanden, Neu und Keine" zur Auswahl.
-
Na dann denk mal ein wenig über das was Du da treibst nach....
-
über was denn? Wenn ich das programmieren könnte, wäre ich nicht hier.
Kannst Du mir da bei meinem Problem hier weiterhelfen?