PDA

Vollständige Version anzeigen : einfaches Update & Edit Problem


Kommodore
23.06.2003, 10:36
Hallo

Mein Problem:

Dim db As Database
Dim I As Integer
Dim rs_ziel As Recordset
Set db = CodeDb()

Set rs_ziel = CurrentDb.OpenRecordset("Tabelle_Uebersicht")

With rs_ziel
.AddNew
!Seminartitel = "Seminar_test"
.Update
End With
rs_ziel.Close

Dieses Skript legt einen neuen DS an mit dem Seminartitel = "Seminar_test".

Nun möchte ich die Tabelle mit weiteren Werten füllen, wie z.B.

For I = 1 To 4 Step 1
rs_ziel.Fields(I).Value = "20"
Next I

Fehler: Update oder CancelUpdate ohne AddNew und Edit!

Detailierte Antworten wären nett.

khs-hh
23.06.2003, 10:42
Die Fehlermeldung sagt doch eigentlich schon woran es fehlt.

Immer wenn Du Felder editieren willst muss vorher .edit und anschliessend .update gegeben werden und zwar für jeden Satz einzeln:

For I = 1 To 4 Step 1
rs_ziel.edit
rs_ziel.Fields(I).Value = "20"
rs_ziel.update
Next I

Kommodore
23.06.2003, 10:52
Danke!

Ich möchte aber in dem selben Datensatz die Werte ändern, indem ich den neuen Seminartitel angelegt habe, siehe oben.

Benötigt man Bookmark oder etwas anderes!

Detailierte Antworten wären nett!

CU

khs-hh
23.06.2003, 10:54
Das ist natürlich etwas anderes. Das kannst Du. Aber dann muss Deine Schleife in dem von Dir geposteten Code zwischen rs_ziel.edit und re_zeil.update stehen.

Also pro Satz nur einmal edit/update

racoon0506
23.06.2003, 10:56
dann füge die Zeilen doch in den Code ein....

With rs_ziel
.AddNew
!Seminartitel = "Seminar_test"
For I = 1 To 4 Step 1
.Fields(I) = "20"
Next I
.Update
End With

(oder geht das auch nicht?)

Kommodore
23.06.2003, 11:15
Die Tabelle ist nicht wirklich geöffnet.

Set rs_ziel = CurrentDb.OpenRecordset("Tabelle_Uebersicht")

ist immer noch nicht geöffnet!

With rs_ziel
.AddNew
!Seminartitel = "Seminar_test"
For I = 1 To 4 Step 1
.Fields(I) = "20"
Next I
.Update
End With

Ausgabe des Codes ist: Im ersten DS wird Seminartitel ersetzt ("Seminar_test") und die Forschlaufe wird Durchlaufen aber nur das letzte Feld wird upgedatet.

racoon0506
23.06.2003, 11:30
Die Tabelle ist nicht wirklich geöffnet.
Die wird auch nicht geöffnet. Du erstellst ja lediglich ein Recordset mit deiner Tabelle als Quelle.

Seltsamerweise funzt das bei mir. Vielleicht stimmt bei dir etwas mit der Fields-Nummerierung nicht. Fields(1) entspricht der zweiten Spalte.......
(das Step1 kannst du dir sparen.....)
Was sind das eigentlich für Felder, die du mit Fields ansprechen willst. Text oder Zahl?

Arne Dieckmann
23.06.2003, 11:35
Vielleicht das Update in die For-Schleife?

With rs_ziel
.AddNew
!Seminartitel = "Seminar_test"
For I = 1 To 4 Step 1
.Fields(I) = "20"
.Update
Next I
End With

racoon0506
23.06.2003, 11:40
@Arne
nicht wirklich...... wie schon gesagt, bei mir funzt das mit dem Update am Ende.


Probleme wird es nur geben, wenn z.B. Fields(1)=Text, Fields(2)=Zahl....
Hab in meiner Tab nur Zahlenfelder dafür hinterlegt.
Ergebnis sieht wie gewünscht aus. (allerdings dann auch .Fields(I)=20..)

Arne Dieckmann
23.06.2003, 11:45
@Jan: Ist mir nach dem Posting auch eingefallen, dass das wohl Quatsch von mir war. :stupid:

@Kommodore: Hat es denn einen besonderen Grund, warum Du mit Fields(i) arbeitest?

Kommodore
23.06.2003, 12:20
Eigentlich wollte ich nur einen neuen Datensatz anlegen, und mittels einer For ... Next Schlaufe den nächsten fünf Felder speichern!
1. Feld SeminarTitel - Text
2. - 6. Feld - Zahl

racoon0506
23.06.2003, 12:47
Dann gehört auch
.Fields(I)=20
(also ohne die ", da du sonst versuchst hier einen Text einzufügen)

Arne Dieckmann
23.06.2003, 12:51
Hm. Also bei mir klappt das (s. auch Jans Beiträge). Vielleicht solltest Du sicherheitshalber das Recordset noch als DAO-Recordset deklarieren:

Dim rs_ziel As DAO.Recordset
Set rs_ziel = CurrentDb.OpenRecordset("Tabelle_Uebersicht")

With rs_ziel
.AddNew
!Seminartitel = "Seminar_test"
For I = 1 To 4 Step 1
'bei Zahlenfeldern:
.Fields(I) = 20
'bei Textfeldern:
'.Fields(I) = "20"
Next I
.Update
End With

Kommodore
23.06.2003, 13:40
Hallo Arne Dieckmann,

gute Idee mit dem DAO- Zugriff , dananch hats gefunzt!

Vielen Dank für eure Antworten Ihr habt mir wirklich weitergeholfen.
Danke nochmals.

Tolles Forum!