Automatisch Kennzeichen generieren

  • VB.NET

Es gibt 61 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Ohne den von Dir verwendeten Code zu kennen, kann ich zumindest nur angeben, wie es funktioniert. Oder hast Du in den DGV-Spalten irgendein bestimmtes Format vorfestgelegt, bei dem das Programm jetzt versucht, den Text reinzupressen?
    Bilder
    • saubere Übertragung ins DGV.png

      11,35 kB, 535×255, 61 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VBHunter schrieb:

    hast du eine ahnung wie so ein Fehler entstehen kann?
    Oder Du kopierst Code in Dein Programm, ohne zu verstehen, was der macht und bringst dann die Typen der Variablen durcheinander.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Okay jetzt hat es geklappt, war mein fehler hatte noch kennzeichen unter String :D ... sorry manchmal ist es sehr anstrengend zwei Arbeiten am Tag zu haben.

    Habt ja bestimmt gesehen das ich Tüv habe für die Fahrzeuge etc....

    Frage: Wie kann ich das machen das er jetzt quasi Tüv prüft und er wieder zwei Jahre tüv bekommt (ausgehend vom Systemdatum)

    Ich klicke auf Autokauf ... Das Fahrzeug bekommt den Stempel nächster TÜV 01.01.2002

    hier mal mein Programiertes "Systemdatum"

    VB.NET-Quellcode

    1. Public SystemDatum As New Date(2000, 1, 1)


    So er beginnt das Spiel immer mit 01.01.2000 + die zwei Jahre Tüv = Neu untersuchung 01.01.2002

    Das ist mein TÜV prüf Button:

    VB.NET-Quellcode

    1. Dim NeuerTuev As String = SystemDatum
    2. Dim Spalt As Integer
    3. Dim Zeil As Integer
    4. If TuevbeiKaufSprinter > SystemDatum Or TuevbeikaufPritsche > SystemDatum Then
    5. MessageBox.Show("Du Hast noch genug Tüv für dein Fahrzeug", "Information")
    6. Exit Sub
    7. End If
    8. If NeuerTuev > SystemDatum Then
    9. MessageBox.Show("Du Hast noch genug Tüv für dein Fahrzeug", "Information")
    10. Exit Sub
    11. End If
    12. If MessageBox.Show("Willst du Tüv durchführen für dieses Fahrzeug?", "Information", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
    13. NeuerTuev = DateAdd("yyyy", 2, SystemDatum)
    14. Spalt = 3
    15. Zeil = DataGridView1.CurrentCell.RowIndex
    16. DataGridView1.Item(Spalt, Zeil).Value = NeuerTuev
    17. End If


    Soweit hab ich das alles hinbekommen ... Klicke ich jetzt auf Tüv durchführen sagt er mir "Du Hast noch genug Tüv für dein Fahrzeug" obwohl tüv fällig wäre .... als Test habe ich ein Fahrzeug bei Kauf auf -1 Jahre gesetzt Sprich benötigt Tüv am 01.01.1999 .... normalerweise müsste er ja jetzt 01.01.2001 anzeigen oder wie es noch besser wäre das genaue datum der Prüfung ... wenn ich erst am 02.01.1999 Prüfe dann ist der nächste Tüv am 02.01.2001 fällig.

    Ich hoffe ich verwirre jetzt nicht.

    Noch eine Frage wie kann ich gezielt etwas abfragen von einer DGV .... z.b. Habe ich eine Karte und klicke auf Berlin, jetzt Soll er mir anzeigen Fahrzeug mit dem Kennzeichen 0003,0004,0006 ist in Berlin ... also wie sage ich das, dass Fahrzeug mit dem Kennzeichen existiert und wo es sich gerade befindet.
    das ist vermutlich ein ärgerlicher und dummer Fehler, und du solltest nochmal post#28, #29 lesen, und endlich mal anfangen, .Net zu programmieren - Stichwort: Datentypen berücksichtigen.
    Vlt. liegts auch nicht direkt daran, aber solange du strict Off proggst, brauch man sich über deine Codes nicht unterhalten.
    Dein Problem sind die Datentypen... Ein String ist nunmal kein Date und lässt sich daher schlecht vergleichen.
    Ein weiteres Problem ist deine Beratungsresistenz, denn sonst hättest Du das Problem erst garnicht.
    "Hier könnte Ihre Werbung stehen..."
    Es ist die ganze Zeit an....


    EDIT:
    Ich weis das ein Sting kein Date ist deshalb habe ich es am anfang geändert
    Erst....
    Dim Systemdatum As As New Date(2000, 1, 1)
    dann zeigt er es so an 01.01.2000 00:00 ... ich will aber das er beim TÜV 01.01.2000 anzeigt ohne 00:00 deshalb hab ich die TÜV deklarationen in String ... und es funktioniert er Zeigt es mir jetzt so an wie ich es will ....

    ändere ich die Strings wieder um und es ist wie vorher dann passiert genau das selbe "Du Hast noch genug Tüv für dein Fahrzeug" deshalb ging ich jetzt nicht von solch einen Fehler aus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VBHunter“ ()

    Dein Bild zeigt die Standardprojekteinstellungen. das bedeutet nicht das du Strict ON hast!!

    Rechtsklick auf das Projekt in der Projektmappe -> Eigenschaften und dann den Reiter ich glaube Debuggen ode so.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Tja, jetzt siehst du was alle immer meinten. Aber dir wurde oft genug ein Link gepostet wo diese Dinge erklärt wurden. Genauso wie bei den Posts von mir in deinen anderen Themen folgst du ja Links leider nicht.
    Das meinen sie alle mit "Beratungsresistenz"!

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Na ja dann bin ich ja jetzt erstmal mit korrigieren beschäftigt ... solange es danach funktioniert mit mein TÜV ....

    ähm ich bekommen hier die umformatiertung nicht hin weis wer rat?

    "Option Strict On" lässt spätes Binden nicht zu.

    VB.NET-Quellcode

    1. Dim ofd As New OpenFileDialog
    2. If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
    3. Dim v As Array = Split(My.Computer.FileSystem.ReadAllText(ofd.FileName), ";")
    4. Label_nFirma.Text = v(0)
    5. Label_Spielername.Text = v(1)
    6. Label_pKonto.Text = v(2)
    7. Label_fKonto.Text = v(3)
    8. Label_fWert.Text = v(4)
    9. End If


    Denke mal Array will er nicht weil Variable v Rot ist

    VBHunter schrieb:

    Ja ich habe option strict on wurde ja in anderen Themen oft von dir drauf hingewiesen
    ;(

    VBHunter schrieb:

    VB.NET-Quellcode

    1. Dim v As Array = Split(My.Computer.FileSystem.ReadAllText(ofd.FileName), ";")
    ist ganz VB6-schlimm.
    machst Du einfach

    VB.NET-Quellcode

    1. Dim line = System.IO.File.ReadAllText(ofd.FileName)
    2. Dim v As String() = line.Split(";"c)
    Mach da lieber eine Zeile und eine Variable mehr, da lässt es sich leichter Fehler finden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Tut mir Leid da habe ich dich wohl immer missverstanden. ||

    Prima danke ... so funktioniert es wieder


    hier komm ich auch nicht ganz weiter ;(

    AddressOf Timer_Tick <--- da sagt er mir Timer_Tick (Erlaubt keine Einschränkungen

    und in diesen Punkt ....

    VB.NET-Quellcode

    1. Label1.Location = New Point(Me.Width / 2 - Label1.Width / 2, Me.Height / 2 - Label1.Height / 2)

    VBHunter schrieb:

    VB.NET-Quellcode

    1. Label1.Location = New Point(Me.Width / 2 - Label1.Width / 2, Me.Height / 2 - Label1.Height / 2)
    Mach mal Integer-Division:

    VB.NET-Quellcode

    1. Label1.Location = New Point(Me.Width \ 2 - Label1.Width \ 2, Me.Height \ 2 - Label1.Height \ 2)
    ==============

    VBHunter schrieb:

    AddressOf Timer_Tick <--- da sagt er mir Timer_Tick (Erlaubt keine Einschränkungen
    Was ist da?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Echt interessant das die Ollen / einfach nur nach \ mussten hätte ich ja noch ewig gesucht.... Danke

    AddressOf Timer_Tick
    das ist aus einer klasse die hatte mir Nofear23m erstellt

    hier mal die Sub

    VB.NET-Quellcode

    1. Public Sub New(timername As String, timetocompleteSeconds As Integer, flowPanel As FlowLayoutPanel)
    2. Timer = New Timer() With {.Interval = 1000, .Enabled = True}
    3. AddHandler Timer.Tick, AddressOf Timer_Tick
    4. RunsOutAt = DateAdd(DateInterval.Second, timetocompleteSeconds, Now)
    5. CreateCluster(timername, flowPanel)
    6. StartetAt = Now
    7. Timer.Start()
    8. End Sub

    VBHunter schrieb:

    hier mal die Sub
    Und?
    Was geht nicht?
    Was für ein Timer (Namespace) ist das?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Der Fehler kommt:


    und das ist die Klasse

    VB.NET-Quellcode

    1. Public Class BuildTimerObject
    2. Public _progressBar As Pbar
    3. Public _restTimeLabel As Label
    4. Dim fp2 As New FlowLayoutPanel
    5. Public Sub New(timername As String, timetocompleteSeconds As Integer, flowPanel As FlowLayoutPanel)
    6. Dim Timer_Tick As New Timer
    7. Timer = New Timer() With {.Interval = 1000, .Enabled = True}
    8. AddHandler Timer.Tick, AddressOf Timer_Tick
    9. RunsOutAt = DateAdd(DateInterval.Second, timetocompleteSeconds, Now)
    10. CreateCluster(timername, flowPanel)
    11. StartetAt = Now
    12. Timer.Start()
    13. End Sub
    14. Public Sub CreateCluster(timername As String, flowPanel As FlowLayoutPanel)
    15. 'Dim fp2 As New FlowLayoutPanel
    16. fp2.FlowDirection = FlowDirection.TopDown
    17. fp2.Controls.Add(New Label() With {.Text = timername}) ', .Width = 150})
    18. _restTimeLabel = New Label() With {.Text = "Ferig in " & New TimeSpan(0, 0, CInt(DateDiff(DateInterval.Second, Now, RunsOutAt))).Duration.ToString}
    19. fp2.Controls.Add(_restTimeLabel)
    20. 'fp2.Controls.Add(New Label() With {.Text = "Fertig um " & RunsOutAt.ToLongTimeString})
    21. _progressBar = New Pbar
    22. With _progressBar
    23. '.Minimum = 0 : .Maximum = 100 :
    24. '.Value = 0
    25. .Width = 100 : .Height = 20
    26. End With
    27. fp2.Controls.Add(_progressBar)
    28. flowPanel.Controls.Add(fp2)
    29. End Sub
    30. 'Public Event Schliessen()
    31. Public Property Timer As Timer
    32. Public Property StartetAt As DateTime
    33. Public Property RunsOutAt As DateTime
    34. Public Sub Timer_Tick()
    35. Dim completTimeSpan As Integer = Cint(DateDiff(DateInterval.Second, StartetAt, RunsOutAt))
    36. Dim resttime As Integer = CInt(DateDiff(DateInterval.Second, Now, RunsOutAt))
    37. Dim percentValue As Double = ((completTimeSpan - resttime) * 100) / completTimeSpan
    38. If percentValue >= 100 Then
    39. _progressBar.Value = 100
    40. _restTimeLabel.Text = $"Fertig"
    41. _progressBar.Visible = CBool("False")
    42. _restTimeLabel.Visible = CBool("False")
    43. fp2.Visible = CBool("False")
    44. _progressBar.SendToBack()
    45. Timer.Stop()
    46. RaiseEvent Ladenfertig()
    47. Else
    48. _progressBar.Value = percentValue
    49. _restTimeLabel.Text = "Restzeit " & New TimeSpan(0, 0, CType(DateDiff(DateInterval.Second, Now, RunsOutAt), Integer)).Duration.ToString
    50. End If
    51. End Sub
    52. Public Event Ladenfertig()
    Bezüglich des Datums: Du kannst das Datum auch direkt in der Spalte des DGV Formatieren.
    Guck mal im DGV unter Spalten bearbeiten, such deine Saplte aus und dort im obersten Punkt kannst du ein Format setzen.
    dann steht in der Zelle auch 01.01.2000 drin.
    Dann kannst Du die variable auch als Date deklarieren, das vergleicht sich besser mit date und mit TimeSpan kannste sogar flux Zeitspannen drauf rechnen und abziehen...
    was ich Dir auch (nochmal) empfehle, ist das TuT von @ErfinderDesRades bezüglich „Daten laden, speichern, einfachste Variante“
    wenn du nämlich für deine Daten ein typisiertes Dataset nimmst, erschlägst du viele Probleme auf einen Schlag.
    Du magst dich davon erschlagen fühlen, aber aus eigener Erfahrung kann ich Dir sagen das es sich absolut lohnt und dein Programm hinterher viel sauberer ist und deutlich besser funktioniert... UND du blickst selbst durch bei deinem Code!
    "Hier könnte Ihre Werbung stehen..."
    Hallo

    VBHunter schrieb:

    das ist aus einer klasse die hatte mir Nofear23m erstellt

    Kannst du dich noch erinnern das ich dir immer wieder gesagt habe das du nicht mal versuchst..... Ach lassen wird das.
    Du hast trotzdem nur C&P gemacht. So lernt man nix.

    ​Korrigiere die Signatur, das macht dir glaube VS sogar automatisch wenn du in der Zeile ​Strg + . drückst.
    ​ Private Sub Timer_Tick(sender As Object, e As EventArgs)

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hey das ist ein Cooler Tip @MichaHo mit der DGV ... Vielen dank

    Danke für den hinweis mit dem TUT ich schaue mir das gerade mal an .... Klingt sehr komplex ^^ aber ich werde mich mal versuchen da ran zu machen....
    Hatte vorhin auch eine Methode zum Speichern und Laden gefunden per VB, kennste bestimmt oben auf Projekt -> YX Eigenschaften -> Einstellungen .... und da die Jeweiligen zu speichernen Datein eintragen z.b. vname.text ... dann bei der Form im Button.Klick My.Settings... etc

    Ist das auch empfehlenswert?

    Edit:
    Danke für den hinweis... :)

    C&P nuzte ich nicht, ich schreibe zwar ab, aber Tippe immernoch selber um mir dinge einzuprägen warum wieso was ist. Tut mir leid das ich so gebrandmarkt bin bei dir || ... Ich lerne aber immer mehr dazu, finde super wieviel ich auch schon allein hin bekommen habe.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VBHunter“ ()

    Die Settings kannst du nutzen um spezifische einstellungen zu speichern. Aber um komplexe daten zu speichern nutze bitte ein typ dataset, das ist wirklich nicht schwer... erleichtert aber einiges
    "Hier könnte Ihre Werbung stehen..."