Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

einstellig->zweistellig

Empfohlene Antworten

Veröffentlicht

Wie schaffe ich es in einer Abfrage einer einstelligen Zahl eine führende 0 vorzustellen, weil die Zahlen MÜSSEN zweitellig sein. z.B. 1 -> 01; 4->04

BÜDDEEEEEEEE helft mir *GG*

Gruss Durone

*seufz*

Und wieder mal die Standardfragen.... :(

Macht doch bitte etwas genauere Angaben!

Welche Datenbank benutzt du?? Falls du eine Programmiersprache benutzt, welche?? Welchen Datentyp hat dein Feld??

ups, sorry....

also ich greife über Access 2002 auf den MS SQL Server 2000 zu. Das ganze versuche ich in einen VBA-Code zu integrieren. Der wert den ich haben will, wird aus zwei Integerfeldern zusammengeführt, dabei will ich eben das zweite Feld mit einer führenden null haben, ob ich daraus aber nu ein varchar oder wieder ein Integer mache, ist mir überlassen, d.h. egal...hoffe ich habe nix vergessen...

Nein leider nicht, weil ich das ganze per SQL befehl an den DB-Server schicken will, und der schlcukt kein Format

Hi,

ich hatte mal ein ähnliches Problem. Es musste in einer Spalte alles auf gleiche LEN gebracht werden. d.h. führende Nullen rein (war ne Art Postleitzahlenproblem).

1. Funktion schreiben, die die Längendifferenz bildet:

etwa so:

Public Function min_max(cn As ADODB.Connection, Tabelle As String, Spalte As String) As Integer

'Gibt die die Differenz zwischen der maximalen und minimalen vorkommenden Laenge der Wert

'einer Spalte zurück

Dim rs As New ADODB.Recordset

Dim sql_string As String

Dim maximum As Integer

Dim minimum As Integer

rs.ActiveConnection = cn

sql_string = "SELECT MAX(LEN(" & Spalte & ")) as Laenge FROM " & Tabelle

rs.Open sql_string

rs.MoveFirst

maximum = rs!Laenge

rs.Close

sql_string = "SELECT MIN(LEN(" & Spalte & ")) as Laenge from " & Tabelle

rs.Open sql_string

rs.MoveFirst

minimum = rs!Laenge

min_max = maximum - minimum

rs.Close

Set rs = Nothing

End Function

Im Hauptcode prüfen:

wenn min_max < 0 dann schwerer Fehler ;-|

wenn min_max = 0 dann nichts zu tun, alles gleich lang

min_max = 1 dann:

If differenz = 1 Then

maximum = max_Feld(cn, cbo_Tabelle.Text, Spalte)

sql_string = "UPDATE " & cbo_Tabelle.Text & " SET [" & Spalte & "] = '0'+[" & Spalte & "] WHERE (((LEN([" & Spalte & "]))<" & maximum & "))"

cn.Execute sql_string

cn.Close

MsgBox ("Die Tabelle wurde aktualisiert!")

Exit Sub

End If

min_max > 1: damals trat das nie auf und ich brauchte es auch nicht. Sicherheitshalber habe ich den Code mal "anprogrammiert", ob dieser auch genauso geht, wurde nie richtig getestet. Gedankenansatz:

If differenz > 1 Then

'MsgBox ("Noch nicht implementiert! Der Längenunterschied ist größer als 1!")

'Der einfachste Weg wird wohl sein, solange Nullen anfügen, bis die Differenz eben 0 ist

While differenz > 0

maximum = max_Feld(cn, cbo_Tabelle.Text, Spalte)

sql_string = "UPDATE " & cbo_Tabelle.Text & " SET [" & Spalte & "] = '0'+[" & Spalte & "] WHERE (((LEN([" & Spalte & "]))<" & maximum & "))"

cn.Execute sql_string

differenz = min_max(cn, cbo_Tabelle.Text, Spalte)

Wend

cn.Close

MsgBox ("Die Tabelle wurde aktualisiert!")

Exit Sub

End If

Hier wird noch eine Funktion max_Feld benutzt:

Public Function max_Feld(cn As ADODB.Connection, Tabelle As String, Spalte As String) As Integer

' Ermittelt die maximale Laenge vorkommender Werte einer Spalte und gibt dies als Wert

' zurück

Dim rs As New ADODB.Recordset

Dim sql_string As String

Dim maximum As Integer

rs.ActiveConnection = cn

sql_string = "SELECT MAX(LEN(" & Spalte & ")) as Laenge FROM " & Tabelle

rs.Open sql_string

rs.MoveFirst

maximum = rs!Laenge

max_Feld = maximum

rs.Close

Set rs = Nothing

End Function

cn ist immer eine Connection,

cbo_Tabelle.Text war hier immer ein Tabellenname, Spalte ist selbstredend.

Ich denke die SQL-Statements sind die wichtigen Methoden für Dich.

So nun aber Schluß mit Codebeispielen hier. Fragen per EMail am besten. Sollte nur eine Anregung sein

Grüße

Buell

Danke erstmal für deine Anregungen und deine Mühen, aber leider hilft mir das nicht weiter, da ich die Orginalspalten nicht ändern möchte (UPDATE), sondern einfach nur auslesen (SELECT) will. NUR bei diesem einen Select soll er mir bei einstelligen zahlen eine führende Null davor setzen.

Und zur deutlichkeit, die beiden spalten, die ich auslesen will, fliessen in eine Neue Spalte in einer anderen Tabelle mit einem INSERT (schon fertig und funzt), das sieht momentan NOCH so aus:

INSERT INTO NEUETABELLE(NEUESPALTE)

VALUES

convert(varchar(6),b.PLAZIERUNGSNR)+convert(varchar(2),z.BLATTNR)

...

Also die Abfrage ist noch länger aber das oben, ist der wichtige Teil

Habe es mit Hilfe doch noch geschafft, falls es jemanden interessiert hier die Syntax:

select

CASE

WHEN Len(convert(varchar(2), col1)) = 1 THEN Convert(char(1), 0)+Convert(char(1), col1)

ELSE

Convert( varchar(2),col1)

END

from table1

Warum denn so kompliziert ????

Auf nem SQL-Server ne führende 0 hinzufügen:

SELECT 0+[spaltenname] FROM blablabla

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.