PDA

Vollständige Version anzeigen : VBA-Ereignis: Zelleninhalt auf bestimmte Dezimalstelle kopieren


rapoport
21.01.2008, 07:24
Hallo Forum!

Ich habe in meiner DB u.a. zwei Tabellen. Nun brauche ich eine Funktion oder besser gesagt ein Ereignis (z.B. Beim_Klick), welches mir den Inhalt von Feld1 (Tabelle2) in das Feld1 von Tabelle1 kopiert.
NUR: In Feld1 von Tabelle1 wird schon ein (fester) (Zahlen)-Wert drin stehen. Wie kann ich im VBA-Code angeben, dass der kopierte Inhalt z.b. an der letzten Position bzw. z.B. an der Position 5 eingefügt wird?

(Ich brauche dieses Ereignis unbedingt, um die gewünschte Funktionalität zu realisieren). Für jede Hilfe Riesen Dank!!!

peterffw
21.01.2008, 07:50
Hi Michael,

von was hängt es denn ab, an welcher Stelle der Inhalt des Feldes1 der Tabelle2 in das Feld1 der Tabelle1 eingestellt werden soll.

Servus
Peter

hcscherzer
21.01.2008, 07:57
Moin Michael,
sind Tabelle1 und Tabelle2 verknüpft?
Bzw.: In welchem Datensatz von Tabelle1 soll die Aktualisierung passieren?

Dann: in ein Feld mit Zahlenwert kannst Du keinen Wert an einer bestimmten Position eingeben, numerische Werte werden formatiert dargestellt aber das ist rein äußerlich. Sowas klappt nur mit Textfeldern, z.B. anhängen so:update tabelle1 set feld1 = feld1 & neuwert;

rapoport
21.01.2008, 09:47
Hallo,

Danke Euch für die schnellen Antworten.
Also der Inhalt soll immer an der gleichen Stelle eingefügt werden. Also z.b. stets im Feld1, nach der 5. Stelle.

Tabelle 1 und 2 sind nicht verknüpft. Wäre eine Verknüpfung hilfreicher?

Ok, wenn ich die gewünschte Zahl mit Textfeldern zusammenfüge, wie erreiche ich, dass im Endeffekt der komplette Wert als Zahl in einer Tabelle in einem einzigen Feld komplett gespeichert wird?

Danke für jede Hilfe!!!

Josef P.
21.01.2008, 09:53
@rapoport: versuchst du damit in einem Feld mehrere Eigenschaften zu speichern, statt eine 1:n-Tabelle zu verwenden?

Was bedeutet für dich einfügen?
Beispiel: 12345678 ... nun soll an Position 3 die Ziffer 9 "eingefügt" werden.
=> Ergebnis: 12945678 oder 13245678 (überschreiben/addieren)

Const conBasis As Long = 12345678
Const conZiffer As Long = 9
Const conStelle As Long = 3

Dim Z As Long
Dim S As String
Dim p As Long

'Variante 1
Z = conBasis
S = Trim(str$(Z))
Mid(S, conStelle, 1) = conZiffer
Z = CLng(S)
Debug.Print ">" & Z & "<"

'Variante 2
Z = conBasis
p = (Log(Z) / Log(10)) - conStelle + 1
Z = Z + conZiffer * 10 ^ p
Debug.Print ">" & Z & "<"

rapoport
21.01.2008, 10:10
Hallo Josef,

Danke für den Code. Ich verstehe leider nocht ganz wie bzw. in welchem Zusammenhang ich den Code aufrufen kann, um mein Vorhaben zu erreichen?

Ich habe folgendes vor: An den Wert 12345 soll per VBA-Befehl 001 angehängt werden, damit später 12345001 herauskommt. Dabei soll der VBA-Befehl jeweils den ersten Datensatz aus der Quell-Tabelle nehmen.
Ein weiterer Code soll dann die 001 aus der Zwischen-Tabelle (Tabelle2) löschen, damit beim nächsten Ausführen 002 als erster Datensatz drinsteht.

Mit AutoWert sowie verknüpften 1:n - Tabellen habe ich mich mehrmals versucht, nur klappt es bei mir leider gar nicht.

Ich hoffe Du kannst mir helfen.

Josef P.
21.01.2008, 10:16
Wenn nur hinten angehängt werden muss, ist es um einiges einfacher. ;)
neuerWert = 12345 * 1000 + 1


Irgendwie habe ich den Verdacht, dass dieses Anliegen aufgrund eines "Fehlers" in der Tabellenstruktur entstand.