online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon morpheus__85 vom 05.12.2019, 13:22 Options

Update per SQL?

Hallo Leute,

hab folgendes Problem.
Ich habe in einer Tabelle mit ca. 10 Spalten in manchen Spalten eine 0 drin stehen. Diese 0 müsste ich alle durch ein "" ersetzen. Meine Tabelle sieht so aus.

Name, Spalte1, Spalte2, Spalte3, Spalte4 ....

Nun kann es sein das in einem Datensatz eine 0 in Spalte 1 steht im nächsten in Spalte 4 im nächste viell. auch in keiner Spalte ne 0 enthalten ist.

Hab das ganze mal so probiert.

UPDATE tbl:Daten
SET Spalte1 = "", Spalte2= "", Spalte3="", Spalte4= "" usw.
WHERE Spalte1 = '0', Spalte2='0', usw....

Nun hat er mit aber wenn in einem Datensatz eine 0 vorkam den ganzen Datensatz gelöscht.

Wie müsste das ganze denn heißen wenn er eben nur die Felder in ein "" umwandeln soll, wo eine 0 drin steht?

hoffe ihr könnt mir helfen.

gruß
morpheus


Antwort schreiben

Antwort 1 von RalfH vom 05.12.2019, 14:21 Options

Hallo,

UPDATE DeineTabelle SET DeineTabelle.DeinFeld= ""
WHERE (((DeineTabelle.DeinFeld)="0"));

Gruß Ralf

Antwort 2 von morpheus__85 vom 05.12.2019, 14:26 Options

Hallo RalfH

danke erstmal für deine Hilfe.
Aber mit der Lösung greife ich ja nur auf 1 Feld zu. Ich muss ja aber alle 10 Felder abprüfen. Gibt es denn nicht eine Anweisung die alle 10 Felder abprüft?
Es ist ja nicht gesagt das gerade in der 1 Spalte eine 0 steht.
Ich müsste also also 10 Spalte abprüfen und dann genau die Spalten einzeln auf "" setzten wo eben bisher eine 0 drin steht.

gruß
morpheus

Antwort 3 von Marie vom 05.12.2019, 14:29 Options

Das musst Du einzeln machen mit 10 Abfragen, aber wenn die wirklich Spalte1 usw heissen kannst Du das mit einer Schleife mit VBA machen.

Nur wenn das jetzt ein einziges Mal zu tun ist machste das schneller händisch.

UPDATE tbl:Daten
SET Spalte1 = Null
WHERE Spalte1 = '0',

Gruß Marie

Antwort 4 von morpheus__85 vom 05.12.2019, 15:12 Options

Hallo Marie,

ok danke für deine Hilfe.
Leider heißen die Spalten anders.
Aber ich werde das ganze dann in einzelnen Abfragen machen und bei die Abfragen dann in einen Button in meinem Formular ein, dass bei bedarf die ganzen Abfragen durchlaufen werden.
Danke für deine HIlfe

gruß
morpheus

Antwort 5 von RalfH vom 05.12.2019, 15:25 Options

Hallo nochmal,
Eine Abfrage reicht.


UPDATE DeineTabelle SET DeineTabelle.DeinFeld= "",DeineTabelle SET DeineTabelle.DeinFeld2= "",DeineTabelle SET DeineTabelle.DeinFeld3= "",
WHERE (((DeineTabelle.DeinFeld)="0")) AND (((DeineTabelle.DeinFeld2)="0")) AND (((DeineTabelle.DeinFeld3)="0"));


Gruß Ralf

Antwort 6 von Marie vom 05.12.2019, 23:34 Options

nö Ralf, das kann nich gehen, er hat geschrieben er hat in manchen Spelten eine 0 stehen.


WHERE (((DeineTabelle.DeinFeld)="0")) AND (((DeineTabelle.DeinFeld2)="0")) AND (((DeineTabelle.DeinFeld3)="0"));

AND heisst aber, wenn beide Felder gleichzeitig 0 sind.

Gruß Marie

Antwort 7 von RalfH vom 06.12.2019, 06:24 Options

Guten Morgen,
Hhhm, dann nutzen wir den Operator OR anstatt AND
Gruß Ralf

Antwort 8 von Marie vom 06.12.2019, 10:18 Options

Zitat:
UPDATE DeineTabelle SET DeineTabelle.DeinFeld= "",DeineTabelle SET DeineTabelle.DeinFeld2= "",DeineTabelle SET DeineTabelle.DeinFeld3= "",
WHERE (((DeineTabelle.DeinFeld)="0")) OR (((DeineTabelle.DeinFeld2)="0")) OR(((DeineTabelle.DeinFeld3)="0"));


Ralfilein, schau genau, dann siehste doch, dass es nicht gehen kann. Oben Dein Code mit Or würde bedeuten: Uberall, wo in einer der Spalten eine 0 steht, egal wo, machst Du alle Felder leer. Das war doch das, denke ich mal, was morpheus falsch gemacht hatte.

Du willst nur in der Spalte, wo eine 0 steht ein Leerfeld, sonst nirgendwo, also musst Du alle Spalten einzeln durchlaufen. Eine andere Möglichkeit sehe ich nicht. Natürlich könnte man mit VBA das in einem Aufwasch machen.

Gruß Marie

Antwort 9 von morpheus__85 vom 06.12.2019, 10:21 Options

Hallo Marie

genau das is das Problem.
Ich habe es zuerst so gemacht wie Ralf, dann waren alle Spalten eines Datensatzes leer weil in 1 Spalte eine 0 Stand. Ich möchte aber eben nur GENAU die Zellen einzeln leeren wo eine 0 drin steht die anderen nicht.
So wie suchen und ersetzten.

Suche 0 ersetze durch NULL.

Wie könnte ich das denn per VBA lösen? Gibt es da eine Art suchen und ersetzen für eine Tabelle Marie?

Danke auf jedenfall für deine Hilfe
gruß
morpheus

Antwort 10 von Marie vom 06.12.2019, 10:34 Options

Ja klar kannste das per vba machen, aber mach es doch so, wie Du vorhattest. Mach einen Button, mach Deine 10 Abfragen und nenne sie qryreplace1, qryreplace2, qryreplace3 usw und ruf sie dann bei Klick auf den Button in einer Schleife auf:

Dim inti as Integer
strQuery as String

for inti = 1 to 10 ' oder wieviele Spalten Du hast

strQuery = "qryreplace" & inti

DoCmd.OpenQuery strQuery

next inti



oder so ähnlich, habs jetzt nicht ausprobiert.

Gruß Marie

Antwort 11 von Marie vom 06.12.2019, 10:39 Options

mit

DoCmd.SetWarnings False

DoCmd.OpenQuery strQuery

DoCmd.SetWarnings True

Kannst Du die Meldungen ausschalten, Damit Du nicht bei jeder Abfrage bestätigen musst ob Du das auch wirklich willst.

Nochmal Gruß Marie

Antwort 12 von morpheus__85 vom 06.12.2019, 10:45 Options

Hallo Marie

das mit den Abfragen wär eine Möglichkeit, allerdings sind das sehr sehr viele Spalten die alle unterschiedlich heißen und das wäre eine heiden Arbeit jede Abfrage einzeln zu stellen.
Wenn es also einen VBA Code gäbe der das in einem Aufwasch erledigen würde wäre des wesentlich einfacher.

gruß
morpheus

Antwort 13 von RalfH vom 06.12.2019, 11:02 Options

@ Mariechen,
ja hast recht aber
Zitat:
Ralfilein
verzeih ich Dir nie !
Gruß Rallemann

Antwort 14 von Marie vom 06.12.2019, 11:09 Options

Hier kannste die Spaltennamen damit auslesen, kommste jetzt alleine klar Deine Abfrage zu generieren und da einzubauen??

Gruß marie


Public Function fkt_Feldnamen()

Dim x
Dim meldung As String

For x = 0 To CurrentDb.TableDefs("tabelle1").Fields.count - 1

msgbox CurrentDb.TableDefs("tabelle1").Fields(x).NAME

meldung = meldung & "Field Number: " & x & " Name: " & _
CurrentDb.TableDefs("tabelle1").Fields(x).NAME & Chr(10) & Chr(13)

Next

msgbox meldung


End Function

Antwort 15 von Marie vom 06.12.2019, 11:09 Options

Rallemännchen, natürlich haste mir schon verziehen :-)))

Antwort 16 von RalfH vom 06.12.2019, 11:19 Options

Mariechen, lass mich kurz nachdenken,

- Du hast Rallemänchen geschrieben und nicht Rammelmänchen= 1Punkt

- Du hilfst hier immer fleissig = 1Punkt

- 1 mal Ralfilein= -1
Sind im Schnitt: 1 + Punkt

Ok, Dir sei verziehen, aber das letzte mal, sonst pipi machen ab ins Bett. ;-)

P.S: Sorry Forum-Admin, musste aber mal gesagt werden

Ähnliche Themen

kommentare in sql datenbank
soad  04.01.2007 - 120 Hits -

mysql update prob
Fabi15  17.01.2007 - 97 Hits - 3 Antworten

sql laufwerk
micky01  21.02.2007 - 110 Hits -

sql server 2000 erkennt strings nicht
brshna  19.04.2007 - 97 Hits - 3 Antworten

sql problem
claudia20071  29.10.2007 - 77 Hits -

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026