Halli hallo meine lieben Forenbesucher,
ich stehe mal nach langer Zeit wieder vor einem Problem.
Also es gibt etwas, dass definitiv umsetzbar ist, aber irgendwie finde ich keinerlei Hinweise wie das funktionieren könnte.
Ich will in einem Formular eine Art "Newsticker" einbinden.
Ich habe hierfür eine Tabelle, in der die Meldungen gespeichert werden (in einer Spalte), und die user-ID (in einer anderen Spalte). Nun will ich beim Aufrufen des Formulars als Nutzer, dass die Meldungen mit miener User-ID aneinandergereiht durch diese "Newsticker-Leiste" durchläuft, ähnlich wie es beispielsweise im Fernsehen, bei n-tv oder N24 zu sehen ist.
Hat da jemand Erfahrung damit und könnte mir hierzu einen Denkanstoss liefern?
Freue mich über Antworten.
VG
David
Hallo David,
vielleicht hilft Dir das?
http://www.access-home.de/cms/?kat=29&bsp_db_id=25 (http://www.access-home.de/cms/?kat=29&bsp_db_id=25)
Gruß
Hi,
cool das hat mir schon sehr weitergeholfen!
Ich hab das tatsächlich noch weiter ausgebaut.
Ich hab dieses Feld in ein Unterformular gepackt und dieses bekommt seinen Tickertext vorgegeben, in dem er sich per OpenRecordset die Nachrichten aus einer Tabelle zieht. In der Tabelle sind in einer Spalte die Texte hinterlegt und in einer anderen die Nutzer-ID, sodass jeder Nutzer einen individuellen Newsticker angezeigt bekommt.
Das Unterformular wurde dann in eine Ecke des Hauptformulars der Anwendung reingepackt, und dort tickert es fröhlich vor sich hin. Wenn nun während der Nutzung ein neuer Tickertext in der Tabelle erstellt wird.... wie schaff ich es die neue Message mit im Ticker darzustellen?
Da der Timer ja bereits auf 100 (0,1 Sekunden) gestellt ist, um die Zeichen zu bewegen.
Ein übergeordneter Timer (alle 3 Minuten) im Hauptformular, der sagt:
child_newstimer.requery
funktioniert leider nicht.
Kannst du da auch was raten?
Hallo,
heißt "funktioniert nicht", dass der Code nichts bewirkt oder wird er gar nicht erst angestoßen?
Außerdem solltest du das Unterformular aktualisieren und nicht das Steuerelement:
{Edit: gemeint ist hier das Unterformular-Steuerelement}Me!child_newstimer.Form.Requery Zitatin dem er sich per OpenRecordset die Nachrichten aus einer Tabelle zieht
Wie sieht der Code dazu aus und warum bindest du das Unterformular nicht an die Tabelle bzw. eine Abfrage?
Also er zieht sich die Nachrichten, gibt sie an den Ticker und alles ist wunderbar.
Er aktualisiert ihn nur nicht! Das liegt aber denke ich tatsächlich daran, dass ich nicht child_newsticker.Form.Requery gesagt habe --> komme erst morgen dazu dies zu prüfen!
Der Vollständigkeit halber denoch mal die Subs aus dem Formular, funzt auch super. Aussehen tut es wie folgt (Innerhalb des Ticker-Formulars)
Private Sub Form_Load()
Dim text_aus_meldung As String
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim user_id As Integer
Set db = CurrentDb
user_id = dao_lookup("user_id", "tbl_user", "user_name ='" & username & "'")
Set rst = db.OpenRecordset("SELECT ntck_text FROM tbl_newsticker_1000 WHERE ntck_user_id =" & user_id, dbOpenDynaset, dbSeeChanges)
Do While Not rst.EOF
If text_aus_meldung = "" Then
text_aus_meldung = rst(0)
Else
text_aus_meldung = text_aus_meldung & " + + + + " & rst(0)
End If
rst.MoveNext
Loop
init_newsticker text_aus_meldung, 170
End Sub
Private Sub Form_Timer()
refreshText_newsticker 'Verweis an das Modul, das den Text alle 0,1 Sekunden eine Zelle weiter schiebt, sodass der Fliessband Effekt entsteht
Me.txtText.Caption = newsticker_text
Me.Caption = newsticker_text
End Sub
Private Sub Form_Close()
newsticker_text = Null
End Sub
"init_newsticker" ist innerhalb eines Moduls vorzufinden und "newsticker_text" ist eine globale Variabel.
Hallo,
Zitat von: -Rockbiest- am Februar 02, 2016, 19:23:09
Das liegt aber denke ich tatsächlich daran, dass ich nicht child_newsticker.Form.Requery gesagt habe
ein Requery nützt ja gar nichts, solange das Textfeld an keine Datenquelle gebunden ist, sondern der Text im Load-Ereignis explizit zugewiesen wird.
Wenn der Inhalt des Newsticker-Textes sich während der Dauer des Formulars ändern soll, so muss der Code des Load-Ereignisses wiederholt ausgeführt werden.
Ich dachte wenn ich Me.child_newsticker.Form.requery mache dann geht das Formular wieder in das Load-Ereignis....
Nein, da hast du falsch gedacht. Aber du könntest den Code aus dem Load-Ereignis in eine Public-Prozedur in Klassenmodul des Unterformulars packen und diese sowohl aus dem Load-Ereignis aufrufen als auch zum Aktualisieren aus dem HF heraus.
Du könntest aber auch eine Public Function in einem Standardmodul erstellen welche den Newsticker erzeugt und den Funktionsaufruf als Steuerelementinhalt eintragen, dann sollte sich der Newsticker folgendermaßen aktualisieren lassen:
Me.child_newsticker.Form!txtNewsTicker.Requerymit "txtNewsTicker" als Name des Textfeldes.
Hi und danke :)
Das funktioniert nun 1A
VG
David