Forums Neueste Beiträge
 

Addition mit einer Zahl, welche führende Nullen hat

24/02/2009 - 17:36 von Hartmut Callies | Report spam
Hallo,
ich habe eine TextBox, in welcher der User einen Nummernkreis (z.B. für
Angebotsnummer) festlegen kann.
Möglich sind nur nummerische Werte: 1 oder 004 oder 000001

Jetzt will ich die eventuell vorhandenen führenden Nullen natürlich
verwenden. Mit Object werden die führenden Nullen
übernommen und kann somit z.B. 000001 in der Datenbank speichern
Dim AngebotID As Object = txtAngebotsnummer.Text

Wie kann ich aber mit AngebotID rechnen (also 000001 + 1 = 000002)?
Denn AngebotID = AngebotID +1 bringt mir einen Fehler.
Fehler: "Option Strict On" làsst keine Operanden des Typs "Object" für den +
Operator zu.

Hartmut Callies
 

Lesen sie die antworten

#1 Peter Götz
24/02/2009 - 19:27 | Warnen spam
Hallo Hartmut,

ich habe eine TextBox, in welcher der User einen
Nummernkreis (z.B. für Angebotsnummer) festlegen kann.
Möglich sind nur nummerische Werte:
1 oder 004 oder 000001



"004" oder "000001" in Textbox.Text sind keine
numerischen Werte sondern Strings und mit
Strings kann man nicht rechnen.


Jetzt will ich die eventuell vorhandenen führenden Nullen
natürlich verwenden.



Für eine wirklich gute Idee halte ich das nicht gerade.

Mit Object werden die führenden Nullen übernommen
und kann somit z.B. 000001 in der Datenbank speichern
Dim AngebotID As Object = txtAngebotsnummer.Text



txtAngebotsnummer.Text liefert einen String und den
kannst Du natürlich an eine Variable vom Typ Objekt
übergeben. Diese Variable enthàlt dann eben den von
txtAngebotsnummer.Text zurückgegebenen String.
Warum packst Du einen solchen String nicht gleich
als String in Deine DB?

Wie kann ich aber mit AngebotID rechnen



Gar nicht, weil Deine Variable AngebotID vom Typ
Objekt ist einen String aber keinen numerischen Wert
wie z.B. Integer, Double usw. enthàlt.

(also 000001 + 1 = 000002)?



Falsch!
Nicht 000001 sondern "000001", ein String eben
und mit dem kann man nicht rechnen.

Im nachfolgenden Beispiel siehst Du, wie Du
Strings, welche Zahlen darstellen zu num. Werten
(hier Integer) mit Hilfe von Integer.TryParse
umwandeln kannst und wie Du sie wieder zurück
in Strings wandelst und mit .PadLeft() mit der
passenden Anzahl an Nullen ("0") auffüllen kannst.


' /// Code in einem leeren Formmodul (Form1)
Public Class Form1
Private WithEvents mTB As TextBox
Private WithEvents mBtn As Button

Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load

CreateControls()
End Sub

Private Sub mTB_TextChanged _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles mTB.TextChanged

Dim Result As Integer
If Integer.TryParse(mTB.Text, Result) Then
mTB.Tag = Result
mBtn.Enabled = True
Else
mTB.Tag = Nothing
mBtn.Enabled = False
End If
End Sub

Private Sub mBtn_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles mBtn.Click

If mTB.Tag IsNot Nothing Then
Dim Value As Integer = CInt(mTB.Tag)
Dim SLen As Integer = mTB.Text.Length

mTB.Text = _
(Value + 1).ToString.PadLeft(SLen, "0"c)
End If
End Sub

Private Sub CreateControls()
mTB = New TextBox
With mTB
.Font = New Font("Arial", 12)
.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
.Height)

.Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right

End With
Me.Controls.Add(mTB)

mBtn = New Button
With mBtn
.Font = _
New Font("Arial", 8, FontStyle.Bold)

.SetBounds _
(mTB.Right - 90, _
mTB.Bottom + 15, _
90, 40)

.Anchor = _
AnchorStyles.Top Or _
AnchorStyles.Right

.Text = "Add 1"
End With
Me.Controls.Add(mBtn)

mTB.Text = "Angebotsnummer bitte!"
End Sub
End Class
' \\\ E N T E


Denn AngebotID = AngebotID +1 bringt mir einen Fehler.
Fehler: "Option Strict On" làsst keine Operanden des
Typs "Object" für den + Operator zu.



Ist auch gut so.
Zum Rechnen braucht man numerische Werte wie Byte,
Integer, Single usw. aber eben keine Objekte die einen
String enthalten.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen