| 

.NET C# Java Javascript Exception

2
Wie ermittle ich den höchsten Wert aus einer Tabelle

Zeahler ArchiveNr
S2018-001 1
S2018-002 5

'Textfeld SNR Datenquelle binden

Me.txtSNR.DataBindings.Add("Text", viewServiceLaufendeNummer, "Zeahler")

Wenn der höchste Wert ermittelt ist dann die S2018-002 um eins erhöhen +1 = S2018-003

Gruss
Thomas Meier
21.03.2018
tsmeier 51 1 3
6 Antworten
0
Zu diesem Problem werden Sie wohl eine eigene Routine schreiben müssen, die entsprechende Zeichenkettenfunktionen ausführt.
Der Ablauf sollte etwa so sein:
Dim sNumber As String = "S2018-001"
Dim sNewNumber As String
Dim lPos, lNumber As Integer
lPos = InStr(, sNumber, "-")
If lPos > 0 Then
lNumber = CInt(Mid(sNumber, lPos+1, 3)) + 1
sNewNumber = Left(sNumber, lPos) & Right("00" & CStr(lNumber), 3)
End If

Der Code macht folgendes: Er trennt die Zeichenkette am Minus auf; der rechte Teil wird als Zahl interpretiert und um 1 erhöht und nach Wandlung in eine Zeichenkette wieder zusammengesetzt.
Man könnte auch bei Bedarf einen regulären Ausdruck einsetzen, um die Zeichenkette aufzutrennen. Ist die Trennung immer an der selben Stelle, dann kann man die obige Funktion weiter vereinfachen, da dann das Suchen nach dem Minus unnötig ist.

Vielleicht hilft es Ihnen ein wenig weiter.
22.03.2018
edvservice 1,4k 1 6
0
Also man müsste erst die Zeilen Zählen in der Tabelle...
dann den höchsten Wert ermitteln...
dann den höchsten Wert Markieren in der combobox...
oder automatisch den Wert um +1 erhöhen

Zählen der Zeilen die vorhanden sind:

Dim cbo As New ListView
cboSNR.Items.Count.ToString("Zeahler")
Dim i = cboSNR.Items.Count.ToString
MessageBox.Show(i)

Gruss
Thomas Meier
23.03.2018
tsmeier 51 1 3
0
Frage wie kann ich DAO in ADO umschreiben!

Dim n As Long
Dim nMaxNumber As Long
Dim sNumber As String

'Recordset sortieren und höchsten Wert ermitteln
rRS.Sort = sField
rRS.MoveLast
nMaxNumber = rRS(sField)

'DS im Recordset durchlaufen
'Prüfen ob Nummer vorhanden
For n = 1 To nMaxNumber
sNumber = sField & "=" & n
With rRS
.FindFirst sNumber
If .NoMatch = True Then
'Wenn Nummer nicht vorhanden = Nummer Zähler n
GetNextFreeNumber = n
Exit For
Else
'Wenn Nummer vorhanden; höchster Wert+1
GetNextFreeNumber = nMaxNumber + 1
End If
End With
Next n


Gruss
Thomas Meier
24.03.2018
tsmeier 51 1 3
0
Unter ADO ist es üblich spezialisierte DataReader zu verwenden. Je nach DB-System kommen entsprechend spezialisierte Klassen zum Einsatz.

Hier ein Link zur Verwendung des DataReaders:
Beispiel eines DataReaders in C#

Wenn Sie das Recordset nach dem größten Wert abfragen, dann empfiehlt sich etwa folgendes SQL-Statement zu verwenden:
SELECT TOP 1 <Feld> FROM <Tabelle> ORDER BY <Feld> DESC

<Feld> und <Tabelle> entsprechend Ihrer Struktur ersetzen. Sie haben dann sofort den höchsten Wert in <Feld> und können nun das Inkrement des Feldes ausführen.
26.03.2018
edvservice 1,4k 1 6
0
Hab noch ein Problem mit dem neuen Nummer setzten!!!

Number Nothing Left Right Number

Dim sNumber As String = "S2018-001"
Dim sNewNumber As String = "S" & DateTime.Now.ToString("yyyy")
Dim Number
Dim lPos, lNumber As Integer
Dim Left
Dim Right

lPos = InStr(sNumber, "-")
If lPos > 0 Then
lNumber = CInt(Mid(sNumber, lPos + 1, 3)) + 1
Number = Left(sNewNumber, lPos) & Right("00" & CStr(lNumber), 3)
MsgBox(Number)
End If

Gruss
Thomas Meier
18.04.2018
tsmeier 51 1 3
0
So oder Ähnlich

Dim sNumber As String = "S2018-99"
Dim sNewNumber As String = "S" & DateTime.Now.ToString("yyyy")
Dim Number
Dim lPos, lNumber As Integer

lPos = InStr(sNumber, "-")
If lPos > 0 Then
lNumber = CInt(Mid(sNumber, lPos + 1, 3)) + 1
Number = (sNewNumber) & "-" & CStr(lNumber)
MsgBox(Number)
End If

Gruss
Thomas Meier
18.04.2018
tsmeier 51 1 3

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH