Juli 15, 2020, 12:22:58

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Newsticker in einem Formular darstellen

Begonnen von -Rockbiest-, Januar 31, 2016, 21:08:39

⏪ vorheriges - nächstes ⏩

-Rockbiest-

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

trebuh


-Rockbiest-

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?

MaggieMay

Februar 02, 2016, 12:56:56 #3 Letzte Bearbeitung: Februar 02, 2016, 22:57:09 von MaggieMay
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?
Freundliche Grüße
MaggieMay

-Rockbiest-

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

-Rockbiest-

Ich dachte wenn ich Me.child_newsticker.Form.requery mache dann geht das Formular wieder in das Load-Ereignis....


MaggieMay

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.
Freundliche Grüße
MaggieMay

-Rockbiest-

Hi und danke :)
Das funktioniert nun 1A

VG
David