Fehler in Update Anweisung?

ronaldo84

Erfahrenes Mitglied
Hallo

ich habe ein Paar Formulare. Wenn diese göffnet werden soll die Größe angepasst weren können. Dazu habe ich eine Tabelle (anpassen) in der die höhe und die Breite des Formulars steht. Wenn der Benutzer sich nun entscheidet die Größe anzupassen sollen die geänderten Werte in die Tabelle geschrieben werden. Das habe ich mit Update gemacht.

Code:
 sql = "update anpassen Set anpassen.hoehe = '" & hoehe & "', anpassen.breite = '" & breite & "' Where name like '" & Form.name & "';"

Wenn ich die Abfrage dann Ausführe kommt kein Fehler aber die Tabellen werden auch nicht aktualisiert. Nur der Erste Wert (höhe) wird gelöscht. d.h.
Wenn der Datensatz vorher so aussah:
Datenverarbeitung | 0 | 0
Sieht es nach der Afbrage so aus:
Datenverarbeitung | | 0
Weiß jmd warum?
Datentypen sind alles Text. Und hoehe und breite werden in einem String gespeichert.
Zum besseren Verständnis Poste ich mal den Betreffenden Quellcode:

Code:
 With rst
	 .ActiveConnection = CurrentProject.Connection
	 .CursorLocation = adUseClient
	 .CursorType = adOpenDynamic
	 .LockType = adLockOptimistic
	End With
 
		sql = "update anpassen Set anpassen.hoehe = '" & hoehe & "', anpassen.breite = '" & breite & "' Where name like '" & Form.name & "';"
		'sqlbreite = "Update anpassen SET anpassen.breite = breite where name like '" & Form.name & "';"
		rst.Open "SELECT * FROM anpassen where name like '" & Form.name & "';"
		If rst.Fields("hoehe") = "0" And rst.Fields("breite") = 0 Then
			antwort = MsgBox("Das Formular wurde noch nicht angepasst. Anpassen?", vbYesNo)
			If antwort = vbYes Then
				hoehe = InputBox("Bitte Höhe eingeben")
				breite = InputBox("Bitte Breite eingeben")
				DoCmd.RunSQL sql
 
			End If
			rst.Close

Danke
 
Hi

so wie ich das sehe, lädst Du das Update beim ersten Start der Seite. Sollte nicht erst geupdatete werden, wenn die antwort yes ist bzw. inputbox() abgeschickt worden ist.

Nur so eine Vermutung.

Edit: hat sich erledigt. Wer lesen kann, ist im Vorteil.

DoCmd.RunSQL sql

ist ja Bestandteil der Abfrage.
 
Verschiebe mal die Zeile
sql = "update anpassen Set anpassen....
vor
DoCmd.RunSQL sql

Da wo die Zeile jetzt steht, sind doch die Variablen hoehe und breite noch gar nicht gesetzt. Oder seh' ich das falsch...?
 
Hi

eigentlich müsste er das auch so laden, da die Variable ja in keiner anderen Abfrage steckt bzw. müsste diese egal wo zur Verfügung stehen.

Ich denke eher, es liegt an der Übergabe der Variablen, an den Werten, die über die inputbox übergeben werden. Ich weiss nicht so, wie dies in vba oder vb läuft (kenne nur ASP vbScript) und ob die boxen nacheinander aufgerufen werden, sprich eine box nach dem nächsten abgeschickt wird.

Wenn ich sowas in ASP regeln müsste und würde den Fehler nicht finden, würde ich mir zuerst einmal das update-Statement ausgeben lassen und dann Schritt für Schritt das Script beenden und schauen, was passiert.

Ich gehe jetzt mal davon aus, dass runSQL = execute ist
 
Schönen guten Abend Luzie,
ich fürchte ich verstehe nicht ganz:
...da die Variable ja in keiner anderen Abfrage steckt bzw. müsste diese egal wo zur Verfügung stehen...
Das ist doch VB oder VBA, oder nicht? Das wird doch sequentiell abgearbeitet. Da wo die Variable sql gefüllt wird, da gibt's noch keine Variablen hoehe und breite. Nach Abarbeitung der Zeile
Code:
sql = "update anpassen Set anpassen.hoehe = '" & hoehe & "', anpassen.breite = '" & breite & "' Where name like '" & Form.name & "';"
steht in sql
Code:
update anpassen Set anpassen.hoehe = '', anpassen.breite = '' Where name like 'WasAuchImmer';
Und diese Variable wird nirgends mehr verändert und dann mit DoCmd.RunSQL direkt zum DB-Server geschickt. Ist doch klar, dass danach die Felder leer sind, oder ist mein VB schon derart eingerostet?
Das einzige was mich wundert ist, dass bei breite 0 drin steht nach dem UPDATE... Hmm

Viele Grüße,
Martin
 
ManicMarble hat gesagt.:
Schönen guten Abend Luzie,
ich fürchte ich verstehe nicht ganz:

Das ist doch VB oder VBA, oder nicht? Das wird doch sequentiell abgearbeitet. Da wo die Variable sql gefüllt wird, da gibt's noch keine Variablen hoehe und breite. Nach Abarbeitung der Zeile

Viele Grüße,
Martin

Huhu

es kann natürlich sein, das Du recht hast, wie gesagt, bin nicht vba-fitt.

In servers./vbScript ist das eigentlich egal, da nach Abschicken des Formulars die Abfrage eh an den Server gestellt wird und sich somit auch die Variablen füllen. Ich will aber jetzt keinen durcheinanderbringen. :)

Es kann natürlich hier clientseitig ablaufen, so dass die Variablen im Falle des Falles wirklich nicht vorhanden sind. :confused:

Mal sehen, vielleicht hast Du wirklich recht.
 
Zurück