Erweiterter Umgang mit typisiertem DataSet -> Tabellennamen lesen/Namensübergabe etc.
- VB.NET
- .NET (FX) 4.0
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 351 Antworten in diesem Thema. Der letzte Beitrag () ist von tragl.
-
-
Ich lasse mir mit letzter Anfrage ja Einträge voreintragen in's DataSet.
Diese Einträge bekomme ich nach dem Ablauf in einem DGV angezeigt.
Es gibt u.a. eine Spalte "Datum" - kann ich mit der Bindingsource / den Daten direkt die Row im DGV selektieren, die das heutige Datum hat
oder muss ich die Spalte "Datum" im DGV danach durchsuchen?
LG"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!" -
Das DGV wird nicht durchsucht, dafür die die BindingSource da.
DeineBindingSource.Position = DeineBindingSource.Find(NameDerDatumsspalte, WertDerGefundenWerdenSoll)
Bei nem Datum musst Du wohl nur ein wenig aufpassen, was genau in der Tabelle drinsteht. Weil ein String "26.06.2020" undDate.Today
werden nicht als gleich 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. -
Danke, für den Tipp.
Es ist kein String, sondern Date als Datentyp. Mit Date.Today.Date sollte das klappen - ich teste mal rum
EDIT: funzt leider nicht, kommt immer "-1" als Position raus
bsDatenabfrageHc.Position = bsDatenabfrageHc.Find("Datum", Date.Today.ToShortDateString)
"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „tragl“ ()
-
-
tragl schrieb:
Mit Date.Today.Date sollte das klappen--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
-
-
bsDatenabfrageHc.Position = bsDatenabfrageHc.Find("Datum", Date.Today.Date)
müsste aber, wenn auch noch ein kleiner Unsinn drinne ist - korrekt wäre:
bsDatenabfrageHc.Position = bsDatenabfrageHc.Find("Datum", Date.Today)
(vonDate.Today
muss man keinDate
nochmal abrufen.)
Achso: es kann immer noch sein, dass in den Daten keine Datumse drinne sind, sondern Zeitpunkte (DAtum+Stunde,Minute,...). Dann gibts da ja auch keine Übereinstimmung.
Edit: ups: petaod war schneller
Aber statt "die Datumsabfrage ebenfalls auf den Tag reduzieren" könntest du den Zeitbereich eines Tages abfragen:
Datum >= Date.Today AndAlso Datum < Date.Tomorrow
Ach - das geht jetzt aber nichtmehr mit der blöden BindingSource.Find-Methode, sondern geht mit Linq.
Aber petaod hat auch recht: Wenn du die DatenErhebung korrigieren könntest, dass da von vornherein wirklich nur Datumse in den Datenbestand gelangen - wär besser.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()
-
Mit
bsDatenabfrageHc.Position = bsDatenabfrageHc.Find("Datum", Date.Today)
funktioniert es - ich hatte einen Fehler im Code und zwar hab ich diebs.position
abgefragt, bevor ich den Filter zur Anzeige des bestimmten Mitarbeiters
auf die BS gelegt hatte
Jetzt hab ich erst den Filter gesetzt und dann die Position abgefragt - nun klappt's.
Geht das jetzt noch irgendwie, dass das DGV auch zu der Position hinscrollt? Aktuell ist das mit heutigem Datum z.B. ziemlich weit unten im DGV - schöner wär's dass
das ganz oben angezeigt wird (hinscrollen wegen mir)
EDIT: hat sich erledigt - funzt mitdgv.FirstDisplayedScrollingRowIndex = bsDatenabfrageHc.Position
"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!" -
uuuund natürlich noch was :
Ich habe folgenden Dialog:
beim Öffnen des Dialogs soll diecmbMitarbeiter
mit einem Bestimmten Mitarbeiter gefüllt sein.
An dieser cmb hängt diebsCmbMitarbeiter
Der Aufruf sieht wie folgt aus:
Er stellt mir aber trotzdem alle Mitarbeiter zur Auswahl. Am liebsten wäre mir, dass der korrekte Mitarbeiter eingetragen in der cmb drin steht und ich die auf Enabled = False setzen kann...
Wo ist hier mein Denkfehler?
Die ID, die aus der PlanRow geholt wird ist definitiv die richtige...."Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!" -
-
ErfinderDesRades schrieb:
Muss man wohl mal untersuchen, ob danach irgendetwas den Filter wieder weglöscht
jo hast recht, da funkt meine Rechtesteuerung dazwischen weil der Dialog auch woanders genutzt wird ohne Voreintragung... dann duplizier' ich den und lass
den Krempel da weg, dann sollte das funzen. Danke für den Hinweis
EDIT: der Filter klappt jetzt, ich hätte aber gerne den gefilterten Mitarbeiter als "Vorauswahl" / feste Auswahl in der Combobox stehen, wenn sich der Dialog öffnet.
was mach' ich da falsch?"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „tragl“ ()
-
-
Hey,
ich wüsste nicht wie ich das anstellen soll - der Datensatz wird erst bei DialogResult.OK erzeugt...
es handelt sich hier nicht um einEditNew
weil ich mit von...bis Datum arbeiten muss und er mir beiEditNew
dann immer
einen Sample-Eintrag mit 01.01.1900 erzeugt, den ich nicht gebrauchen kann
Deshalb bräuchte ich das schon direkt eingetragen in der ComboBox (kann wegen mir auch für den Fall eine Textbox sein, denn ich brauch da keine Auswahl treffen,
die Textbox müsste aber auf den Member(ID) hören und expFullname anzeigen)"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!" -
tragl schrieb:
der Datensatz wird erst bei DialogResult.OK erzeugt
-
ErfinderDesRades schrieb:
obs hilft, einfach das "ausgewählter Wert" in der Combo-Konfiguration wegzunehmen
jo, das funzt - Danke!"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!" -
Ich hätte da nochmal einen kleinen Schönheitsfehler entdeckt - komme aber nicht dahinter, wie ich den weg bekomme
Dazu hab' ich die Solution mit Testdaten mal angehangen.
Login: admin
pw: test
Im Tree 3.1 Datenabfrage HC doppelklicken -> Mitarbeiter H,D,test auswählen
ein paar Einträge markieren, rechtsklick -> schnelländerung
wenn ich im MultiEdit-Dialog auf abbrechen klicke (oder ESC drücke), bekomme ich die Exception dass der Wochentag (DBNull) nicht in string umgewandelt werden kann.
Wenn ich abbrechen drücke, soll da eigentlich garnix passieren...
Hat jemand einen Tipp für mich?"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!" -
Der Fehler wird in der Sub
EditMulti
in BindingSourceX.vb von @ErfinderDesRades ausgelöst. An der Stelle hör ich auf zu recherchieren, da ich dort nicht mehr durchblicke. Der Code führt irgendwie dazu, dass die 2. ausgewählte Zeile zerschossen wird.
##########
Ich hab doch noch weiter geschaut. Die genannte Sub ruftEditMultiPrepare
auf, die dann alle beschreibbaren Werte aufDbNull
setzt. Dann schnappt DeinPrePaint_EventHandler
zu und kann mit den ganzenDbNull
-Zellen nix mehr anfangen.
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.Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()
-
VaporiZed schrieb:
in BindingSourceX.vb von @ErfinderDesRades ausgelöst
Edit2: nicht fertig gelesen, sorry - warum greift der PrePaint-Handler denn nochmal zu, obwohl schon alles "erledigt" ist?
Edit3: geht auch so leider nicht:
VB.NET-Quellcode
- Private Sub dgv_RowPrePaint(sender As Object, e As DataGridViewRowPrePaintEventArgs) Handles dgv.RowPrePaint
- Dim rw = DirectCast(DirectCast(dgv.Rows(e.RowIndex).DataBoundItem, DataRowView).Row, DatenabfrageHcRow)
- If Not rw.WochenTag Is DBNull.Value Then
- If rw.WochenTag = "Samstag" OrElse rw.WochenTag = "Sonntag" Then dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.LightGray
- End If
- End Sub
Edit4: Mir ist im Haltemodus grad aufgefallen, dass das RowPrePaint-Event durchgehend gefeuert wird (hatte 3 Rows markiert und keine Aktion durchgeführt)...
gibt's da nochwas anderes um die Rows mit entsprechendem Wochentag zu färben, was nur beim Laden des DGV passiert und danach nicht mehr?
"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „tragl“ ()
-
Ähnliche Themen
-
menorca - - Sonstige Problemstellungen
-
5 Benutzer haben hier geschrieben
- tragl (179)
- ErfinderDesRades (146)
- VaporiZed (20)
- petaod (4)
- Kasi (3)