PDA

Vollständige Version anzeigen : Werte in Tabellenspalte ändern


Spirit69
19.06.2012, 11:25
Hallo Forum.
Ich bin absoluter newbee in MS Access 2010 und frage mich nun, wie ich es wohl anstelle in einer vorhandenen Datenbank-Tabelle eine bestimmte Spalte, nennen wir Sie mal "Wert1", durchzugehen und die Werte je nach Inhalt zu ändern. Und das natürlich nicht von Hand, sondern automatisch.
Bsp.:
Wenn in der Zelle "100" drin steht, soll dies durch "Stück" ersetzt werden,
steht in der Zelle "1000" drin, soll dort hinterher "kg" stehen.

Da ich noch absolut keinen Plan habe wie ich dieses Problem überhaupt angehen soll, hoffe ich auf Eure Hilfe.

Gruß Ralf

CptChaos
19.06.2012, 11:39
Das ganze sollte grundsätzlich über eine Aktualisierungsabfrage lösbar sein.

Problematisch könnte dabei werden, dass
100 eine Zahl Stück ein Text ist.
-> ggf. muss das Feldformat zuvor angepasst werden, was wiederum zu Problemen führen kann.

1000 eine Zahl ist und kg eine Einheit die dort erstmal nichts zu suchen hat; z.B. wenn Du später mit den Werten rechnen möchtest.
1000 + 1000 ergibt bei Zahlen 2000
1000kg + 1000kg ergibt 1000kg1000kg (eine Zeichenverkettung)

Frage:
Was ist der Hintergrund des Vorhabens? Evtl. muss man woanders ansetzen.

zra8886
19.06.2012, 11:53
Hallo Ralf,
Ausgangstabelle:
<b><em>TblWert</em></b><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><colgroup><col style="font-weight:bold; width:40px;" /><col style="width:117px;" /><col style="width:117px;" /></colgroup><tr style="background-color:#99CCFF; text-align:center; font-weight:bold; "><td>&nbsp;</td><td>A</td><td>B</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">1</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >ID</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >Wert1</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">2</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >1</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >1000</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">3</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >2</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >100</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">4</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >3</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >500</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">5</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >4</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >20</td></tr></table><br/><a href="http://c.excelhost.de/c_beverly/getfile.php?id=122" onclick="window.open(this.href);return false">Tabellendarstellung in Foren Version 5.42</a><br/><br/>
Abfrage:
SELECT TblWert.Wert1, IIf([Wert1]=100,"Stück",IIf([Wert1]=1000,"kg","")) AS Bezeichnung
FROM TblWert;


Ergebnis:
<b><em>AbfWertergaenzung</em></b><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><colgroup><col style="font-weight:bold; width:40px;" /><col style="width:117px;" /><col style="width:117px;" /></colgroup><tr style="background-color:#99CCFF; text-align:center; font-weight:bold; "><td>&nbsp;</td><td>A</td><td>B</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">1</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >Wert1</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >Bezeichnung</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">2</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >1000</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >kg</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">3</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >100</td><td style="color:#000000; background-color:#FFFFFF; text-align:left; " >Stück</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">4</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >500</td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">5</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >20</td><td style="color:#000000; background-color:#FFFFFF; ">&nbsp; </td></tr></table><br/><a href="http://c.excelhost.de/c_beverly/getfile.php?id=122" onclick="window.open(this.href);return false">Tabellendarstellung in Foren Version 5.42</a><br/><br/>

mfg
Roland

gpswanderer
19.06.2012, 12:11
Hallo,
für die Einheiten sollte es eine Tabelle geben mit der Zahl (Primärschlüssel) und dem Text.
In einer Abfrage kann man beide Tabellen zusammen aufnehmen, mit einer Beziehung über die Zahl, dann braucht es gar keinen Code. Die Tabellenwerte in der Ursprungstabelle zu ändern halte ich für überflüssig bzw. eher für falsch.

Spirit69
19.06.2012, 13:54
Hallo Leute.
Danke erst mal, daß Ihr Euch meinem Problem annehmt.
Ich merke gerade, dass ich oben einen total falschen Zusammenhang widergegeben habe.
So wäre die Beschreibung richtig:
Abhängig vom Wert in Spalte "Wert1" soll der Wert in Spalte "Wert2" geändert werden.
"Wert1" ist ein Textfeld mit z.B. "100" als Inhalt.
"Wert2" ist ein Währungsfeld mit einem Preis drin.
Steht in "Wert1" also "100" drin, soll "Wert2" durch 100 geteilt werden und entweder in eine neue Spalte oder in´s Originalfeld eingetragen werden.
Sorry für die falsche Umschreibung oben. Das mit Stück und kg ist ´ne ganz andere Spalte.
Ich weiss, dass "Wert1" als Textfeld schwachsinn ist, wäre als Zahlenfeld sinniger. Die Datenbank habe ich aber nicht angelegt. Ich muß sie jetzt nur anpassen.
Gruß Ralf

zra8886
19.06.2012, 14:25
Hallo Ralf,

Ausagngstabelle:
<b><em>TblWert</em></b><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><colgroup><col style="font-weight:bold; width:40px;" /><col style="width:117px;" /><col style="width:117px;" /><col style="width:117px;" /></colgroup><tr style="background-color:#99CCFF; text-align:center; font-weight:bold; "><td>&nbsp;</td><td>A</td><td>B</td><td>C</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">1</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >ID</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >Wert1</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >Wert2</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">2</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >1</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >'1000</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >10,00&nbsp;</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">3</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >2</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >'100</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >15,00&nbsp;</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">4</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >3</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >'500</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >20,00&nbsp;</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">5</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >4</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >'20</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >25,00&nbsp;</td></tr></table><br/><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><tr style="background-color:#99FF33; text-align:center; font-weight:bold; "><td colspan="3" > Zahlenformate </td></tr><tr valign="top" style="background-color:#99FF33; text-align:center; font-weight:bold; "><td> Zelle </td><td> Format </td><td> Wert </td></tr><tr><td>C2 </td><td style="text-align:center; ">#.##0,00 ;-#.##0,00 </td><td style="text-align:right; ">10</td></tr><tr><td>C3 </td><td style="text-align:center; ">#.##0,00 ;-#.##0,00 </td><td style="text-align:right; ">15</td></tr><tr><td>C4 </td><td style="text-align:center; ">#.##0,00 ;-#.##0,00 </td><td style="text-align:right; ">20</td></tr><tr><td>C5 </td><td style="text-align:center; ">#.##0,00 ;-#.##0,00 </td><td style="text-align:right; ">25</td></tr></table><b>Zellen mit Format Standard werden nicht dargestellt</b><br/><br/><a href="http://c.excelhost.de/c_beverly/getfile.php?id=122" onclick="window.open(this.href);return false">Tabellendarstellung in Foren Version 5.42</a><br/><br/>
mit dieser Abfrage:
SELECT TblWert.Wert1, TblWert.Wert2, [Wert2]/[Wert1] AS Einzelpreis
FROM TblWert
GROUP BY TblWert.Wert1, TblWert.Wert2, [Wert2]/[Wert1];

ergibt:
<b><em>AbfEinzelpreis</em></b><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><colgroup><col style="font-weight:bold; width:40px;" /><col style="width:117px;" /><col style="width:117px;" /><col style="width:117px;" /></colgroup><tr style="background-color:#99CCFF; text-align:center; font-weight:bold; "><td>&nbsp;</td><td>A</td><td>B</td><td>C</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">1</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >Wert1</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >Wert2</td><td style="color:#000000; background-color:#C0C0C0; text-align:center; " >Einzelpreis</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">2</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >'100</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >15,00&nbsp;</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0,15</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">3</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >'1000</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >10,00&nbsp;</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0,01</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">4</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >'20</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >25,00&nbsp;</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >1,25</td></tr><tr><td style="background-color:#99CCFF; text-align:center; font-weight:bold; ">5</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >'500</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >20,00&nbsp;</td><td style="color:#000000; background-color:#FFFFFF; text-align:right; " >0,04</td></tr></table><br/><table border="1" cellspacing="0" cellpadding="0" style="border-color:#000000; border-width: 1px; font-size:11pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "><tr style="background-color:#99FF33; text-align:center; font-weight:bold; "><td colspan="3" > Zahlenformate </td></tr><tr valign="top" style="background-color:#99FF33; text-align:center; font-weight:bold; "><td> Zelle </td><td> Format </td><td> Wert </td></tr><tr><td>B2 </td><td style="text-align:center; ">#.##0,00 ;-#.##0,00 </td><td style="text-align:right; ">15</td></tr><tr><td>B3 </td><td style="text-align:center; ">#.##0,00 ;-#.##0,00 </td><td style="text-align:right; ">10</td></tr><tr><td>B4 </td><td style="text-align:center; ">#.##0,00 ;-#.##0,00 </td><td style="text-align:right; ">25</td></tr><tr><td>B5 </td><td style="text-align:center; ">#.##0,00 ;-#.##0,00 </td><td style="text-align:right; ">20</td></tr></table><b>Zellen mit Format Standard werden nicht dargestellt</b><br/><br/><a href="http://c.excelhost.de/c_beverly/getfile.php?id=122" onclick="window.open(this.href);return false">Tabellendarstellung in Foren Version 5.42</a><br/><br/>

mfg
Roland

Spirit69
19.06.2012, 14:42
Hallo Roland.
So weit, so gut. Jetzt habe ich eine Abfrage mit einem Feld "Einzelpreis", das den berechneten Wert enthält.
Gibt es jetzt noch eine Möglichkeit den berechneten Wert als Zahl im Format Währung in meiner Ausgangstabelle in einem zusätzlichen Feld einzutragen?
Wohlgemerkt... nicht als berechnetes Feld (Formel) sondern als tatsächliche Zahl.
Gruß Ralf

zra8886
19.06.2012, 14:45
mit 2003.

mit 2010 musst du suchen:

Im Entwurfsmodus der Abfrage:

rechter Mausklick auf die Berechnung
Eigenschaften
Format: Währung

mehr ist da nicht nötig. Da braucht es kein Extrafeld.

mfg
Roland

Spirit69
19.06.2012, 14:58
Ja nee, is klaaar! Die Umstellung auf Währung ist kein Problem.

Die Datenbank soll aber so umgestrickt werden, dass die Spalte "Preis pro Einheit" (im Beispiel oben "Wert2") ganz rausfällt und durch eine Spalte "Einzelpreise" ersetzt wird. Die Spalte mit den hohen Preisen soll also nicht mehr vorhanden sein.
Ich brauch also jetzt ´ne Lösung, wie ich die neuen Einzelpreise in der Tabelle speichern kann, auch wenn ich später die Spalte "Wert2" gelöscht habe.

Gruß Ralf

IngGi
19.06.2012, 16:22
Hallo Ralf,

in Anlehnung an Rolands Tabelle: Erst das neue Feld Einzelpreise einfügen und dann folgende Aktualisierungsabfrage:

UPDATE TblWert SET Einzelpreis =[Wert2] / CLng([Wert1]);

Gruß Ingolf

maikek
19.06.2012, 16:25
Hallo,
das machst du am schnellsten mit einer Aktualisierungsabfrage. Leg in deiner Tabelle das Feld Einzelpreis an und schreibe dann die Werte in die Felder:
UPDATE TblWert SET Einzelpreis = [Wert2]/[Wert1]
Probier's an einer Kopie der Tabelle ;)
maike

Spirit69
20.06.2012, 11:38
That´s it !!!
Genau das hab´ ich gesucht.
Vielen Dank für Eure Hilfe.
Warscheinlich dauert´s nicht lange, bis ich Euch wieder nerve.