EPG-Buddy ein neues EPG Tool (8 Viewers)

Toddi

MP Donator
  • Premium Supporter
  • December 29, 2008
    54
    18
    Kiel
    Home Country
    Germany Germany
    Beim Testen ist mir aufgefallen, das der Fehler auch vor den letzten Änderungen schon da war. Das ist mir nur leider nicht aufgefallen.
    Mit folgenden Änderungen klappt es dann:
    ; If Ubound($array) < 2 Then
    If Ubound($array) < 1 Then

    $query = "SELECT groupmap.idGroup, groupmap.idChannel, channel.displayName FROM groupmap INNER JOIN channelgroup on groupmap.idGroup = channelgroup.idGroup INNER JOIN channel On groupmap.idChannel = channel.idChannel ORDER BY UPPER(channel.displayName) ;"

    $array1 = (_MSSQL_Query($MssqlConn, $query)).getrows

    ; For $i = 1 to (UBOUND($array1)-1)
    For $i = 0 to (UBOUND($array1)-1)

    GUICtrlSetData($combo_31_21, $array1[$i][2], "----------")
    GUICtrlSetData($combo_32_21, $array1[$i][2], "----------")
    GUICtrlSetData($combo_33_21, $array1[$i][2], "----------")
    GUICtrlSetData($combo_34_21, $array1[$i][2], "----------")

    Next

    Else

    ;~ $array = (_MSSQL_Query($MssqlConn, $query)).getrows

    ; For $i = 1 to (UBOUND($array)-1)
    For $i = 0 to (UBOUND($array)-1)

    GUICtrlSetData($combo_31_21, $array[$i][2], "----------")
    GUICtrlSetData($combo_32_21, $array[$i][2], "----------")
    GUICtrlSetData($combo_33_21, $array[$i][2], "----------")
    GUICtrlSetData($combo_34_21, $array[$i][2], "----------")

    Next

    EndIf
    Ich verstehe aber nicht so richtig, warum der Fehler nur bei der MSSQL-Abfrage auftaucht. Meiner Meinung hat das erste Element eines Arrays immer den Index 0 und nicht 1. Daher müsste eigentlich auch bei den anderen Datenbank-Abfragen immer 1 Element (die Nummer 0) fehlen.
    Aber vielleicht bin ich da auch völlig auf dem Holzweg.
     

    Toddi

    MP Donator
  • Premium Supporter
  • December 29, 2008
    54
    18
    Kiel
    Home Country
    Germany Germany
    Hat mir keine Ruhe gelassen:
    Bei MySQL scheint es zu passen, da dort ja die Zeilenzahl ohne Abzug benutzt wird.
    Aber bei SQlite müsste eigentlich das Problem wie bei MSSQL auftreten. Das kann ich jetzt bloss leider nicht so einfach testen
     

    Toddi

    MP Donator
  • Premium Supporter
  • December 29, 2008
    54
    18
    Kiel
    Home Country
    Germany Germany
    Hab jetzt auch SQlite getestet, da passt alles.
    Also vergiss einfach alles was ich fantasiert habe.:)
    Nur für MSSQL müssten die Änderungen aufgenommen werden.
     

    MausWiesel

    Portal Member
    December 21, 2011
    37
    10
    Home Country
    Germany Germany
    Guten Abend geneigte AutoIt3-Gemeinde,

    Außerdem habe ich "blind" eine Abfrage für MSSQL eingebaut, die (hoffentlich) überprüft, ob es andere Gruppen gibt als "All Channels" und falls nicht, dann die Sender aus "All Channels" einliest. Den MySQL Teil habe ich exakt so übernommen, wie von @MausWiesel geschrieben. Eine neue EXE hängt an, einfach im Installationsordner austauschen. Wer immer mit MySQL oder MSSQL arbeitet, der möge bitte testen, ob das so funktioniert. Falls ja, bleibt das drin, auch in der nächsten "offiziellen" Version.

    Habe die EXE getestet und unter Nutzung des MySQL-Teils von mir fast für funktionsfähig erklärt. Die MySQL-Abfragen Zeile 1944 und Zeile 1956 waren noch verdreht, obwohl es im Kommentar richtig beschrieben war. Da es niemand vor mir gefunden hat ... gibts auch keine 5 EUR ;-) für den Finder. Geänderter Code siehe Anhang.

    Die Gruppe "All Channels" wird nämlich nicht verwendet. Sonst würde die Liste der Sender ins Uferlose anwachsen. Bei SAT sind das über 1200 Sender, wovon das allermeiste sowieso nur großer Mist ist. Bei SQLite konnte ich inzwischen auch eine Abfrage realisieren, die sofern es gar keine Sendergruppen gibt dann doch auch die "All Channels" Gruppe mit berücksichtigt.
    Das hatte ich so auch gar nicht vor. Eigentlich sollte die Liste gefüllt werden entweder mit den Sendern aus den "Nicht All Channels" Gruppen oder mit denen aus der "All Channels" Gruppe, wenn sonst keine existiert. Und zwar ohne das der User danach gefragt wird

    @Lehmden ... Du wirst inkonsequent. Erst sollen nicht "All Channels" gelesen werden, weil es sonst die Listbox "sprengt" bzw. zuviel Müll drin steht (so hatte ich dich verstanden und es so auch hingenommen). Nun soll aber als Fallback, dann doch die Sendergruppe "All Channels" benutzt werden (ohne einen Hinweis an den Benutzer). Wie soll der Benutzer wissen, dass er was falsch gemacht hat bzw. er nicht die schlaueste/günstigere Konfiguration angewendet hat (ohne einen 26-seitigen Thread von Anfang an durchzuarbeiten). Ich möchte hier ein Lanze für die Useability/Benutzerfreundlichkeit brechen. Wenn man erst den Entwickler oder den Quellcode fragen muss, warum etwas nicht funktioniert (was während der Programmentwicklung schon als mögliche Fehlerquelle bzw. möglicherweise unklug konfigurierte Einstellungen erkannt wurde), dann heiße ich das nicht gut. Es erhöht nur die Inakzeptanz auf Bedienerseite und den Supportaufwand bei Dir.
    Den Bediener nur mit Msg-Box'en zupflastern so dass er ohne 20mal OK klicken gar nicht bis ins Programm kommt ist auch keine Lösung

    Ich denke, das werde ich einbauen. Dann allerdings auch gleich mit einer manuellen Auswahl, ob die "All Channels" Gruppe verwendet werden soll oder nicht. Dürfte den Code im Inneren vereinfachen...

    Kurz ist nicht immer gut. Quellcodekommentierung macht es m.E. einfacher.

    Obendrein habe ich über die MessageBox (bei MySQL) nachgedacht. Die dürfte ernsthaft zu Problemen führen.

    Nein, tut es nicht ... wenn man es richtig macht!

    Denn zum Zeitpunkt, wenn diese Funktion aufgerufen wird, wird der SplashScreen gezeigt, der alles überdeckt, auch eine eventuelle MessageBox. Das würde dann für den User so aussehen, als ob EPG-Buddy gar nicht starten würde. Dabei wartet er nur auf eine User- Eingabe...

    Den beschriebenen Fall habe ich bereits vorm Releasen meines Codevorschlag getestet und der SplashScreen überdeckt es nicht.

    Den entsprechenden Bereich habe ich (hoffentlich passend) auskommentiert, damit im Fall des Falles einfach die "All Channels" Gruppe verwendet wird wie bei den anderen Datenbanken...
    Es ist leider nicht passend auskommentiert:

    1. Der AutoIt-Compiler gibt in Folge deiner Auskommentierung leider keine Fehlermeldung aus, dass in Zeile 1957 ein EndIf ohne zugehöriges If vorhanden ist. Schade, denn der Code ist so eigentlich nicht korrekt. Geänderter Code siehe Anhang.

    2. Am Ende ... ganz am Ende kannst Du es machen wir Du willst ... es ist dein Projekt.
    Du kannst die MsgBox-Zeile auch gern selbst ausprobieren ... der Splashscreen überdeckt diese Ausgabe wirklich nicht.
    Wenn Du den User nicht bei jedem Start mit diesem Hinweis nerven willst, können wir auch eine Abfrage der Art "Ja, Nein, Ja + nicht mehr fragen" daraus machen und bei "Ja + nicht mehr fragen den von dir angedachten Ini-Eintrag entsprechend setzen.

    Soweit erstmal, gutes Programmieren noch.
     
    Last edited:

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,554
    3,936
    Lehmden
    Home Country
    Germany Germany
    Du wirst inkonsequent. Erst sollen nicht "All Channels" gelesen werden, weil es sonst die Listbox "sprengt" bzw. zuviel Müll drin steht (so hatte ich dich verstanden und es so auch hingenommen). Nun soll aber als Fallback, dann doch die Sendergruppe "All Channels" benutzt werden (ohne einen Hinweis an den Benutzer). Wie soll der Benutzer wissen, dass er was falsch gemacht hat bzw. er nicht die schlaueste/günstigere Konfiguration angewendet hat (ohne einen 26-seitigen Thread von Anfang an durchzuarbeiten).
    Die unnötige MessageBox, die nur rum nervt, aber rein gar nichts bringt, die ist nicht nur inkonsequent, sondern widerspricht auch völlig dem, was ich mit meinem Programmen erreichen will. Solche "Nervrequester" gibt es bei mir nur, wenn ein gravierender Fehler aufgetreten ist, der ein Ausführen des Programms ohnehin verhindert. Und das konsequent...
    Es ist nicht meine Aufgabe, den Leuten zu "befehlen", doch bitte eigene Sendergruppen einzurichten. Wenn es also nur die "All Channels" Gruppe gibt, dann ist das halt so. Um ein einziges Mal (öfter ist das ja in aller Regel nicht nötig) sein EPG einzurichten wird niemand seine kompletten TV Einstellungen umwerfen. Wozu auch? Es ist nur so, das sich dort ein Fehler eingeschlichen hatte, der ein Fallback auf die "All Channels" Gruppe, wenn es sonst keine gibt, verhindert hat. Schließlich hatte ich insgesamt nur 2 Stunden Zeit, um die ganze MySQL Geschichte einzubauen. Denn nur so lange hatte ich einen MP1 TV Server zur Verfügung. In dieser Zeit musste ich den entsprechenden Rechner aber auch noch "reparieren", denn nur deswegen hatte ich ihn hier... Dieser Fehler ist im Nachhinein halt sehr schwer zu beseitigen, da ich eben nichts mehr ausprobieren kann, weil ich keine entsprechende Datenbank zur Verfügung habe. Bei SQLite, (dem einzigen, das ich testen kann und das ich brauche) funktioniert der Fallback einwandfrei. Genau das und nur das wollte ich eigentlich auch für die anderen Datenbanken erreichen, und zwar ohne bei jedem Start genervt zu werden.

    dann heiße ich das nicht gut.
    Ganz ehrlich, dann nutze das Tool einfach nicht statt rum zu stänkern.

    Den Bediener nur mit Msg-Box'en zupflastern so dass er ohne 20mal OK klicken gar nicht bis ins Programm kommt ist auch keine Lösung
    Jetzt wirst du aber völlig widersprüchlich. Wer hat denn diese überflüssige MessageBox eingebaut? Ich nicht, im Gegenteil. Ich habe sie wieder raus genommen.

    Genau dieser Mist ist der Grund, warum ich von Anfang an "Bauchschmerzen" dabei hatte, überhaupt etwas für MP1 mit einzubauen.


    Meiner Meinung hat das erste Element eines Arrays immer den Index 0 und nicht 1.
    Das stimmt, aber nicht jedes Array enthält im ersten Element auch die ersten "Nutzdaten". Gerade bei vielen Datenbank- Abfragen steht im ersten Element eines solchen Arrays der Name der entsprechenden Spalte aus der Datenbank. Genau wie bei Exel, wenn man die erste Reihe als Überschrift für die einzelnen Tabellenspalten verwendet. So ist das auch bei der AutoIt Implementation von SQLite und wohl auch bei MySQL. Deswegen muss man bei SQLite nicht mit 0 sondern mit 1 anfangen. Da ich nicht wissen konnte, dass das bei MSSQL anders ist, hatte ich halt die Werte von SQLite übernommen... Hätte ich das testen können, wäre mir das sicher selbst aufgefallen und ich hätte es entsprechend angepasst.

    Neue Testversion im Anhang. Hoffentlich funktioniert es jetzt.
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,554
    3,936
    Lehmden
    Home Country
    Germany Germany
    ich hatte mich echt gefreut, das du gute unterstützung bekommst
    Gegen Unterstützung habe ich nichts, ganz im Gegenteil. In dieser Form ist das aber keine Unterstützung, sondern Besserwisserei. Verursacht weit mehr Arbeit als das es hilft.
    völlig objektiv beurteilt
    Auf keinen Fall. Da sind gleich diverse Widersprüche drin und obendrein hat er nicht mal verstanden, was ich überhaupt bezwecken will.
     

    MausWiesel

    Portal Member
    December 21, 2011
    37
    10
    Home Country
    Germany Germany
    Servus,
    warum so aufgeregt? Du hast mich sicher falsch verstanden. Ich habe und wollte niemand persönlich angreifen. Warum auch, es geht darum das Tool voran zu bringen.

    Die unnötige MessageBox, die nur rum nervt, aber rein gar nichts bringt, die ist nicht nur inkonsequent, sondern widerspricht auch völlig dem, was ich mit meinem Programmen erreichen will. Solche "Nervrequester" gibt es bei mir nur, wenn ein gravierender Fehler aufgetreten ist, der ein Ausführen des Programms ohnehin verhindert. Und das konsequent...

    In meinem Fall hätte die MsgBox (oder ein Logfile-Eintrag) mich dazu animiert eine Sendergruppe anzulegen und Dir Arbeit hier im Thread erspart. Wenn das "rein gar nichts" ist, dann verstehe ich die Welt nicht mehr. Aber okay, es darf jeder seine Meinung haben.

    Es ist nicht meine Aufgabe, den Leuten zu "befehlen", doch bitte eigene Sendergruppen einzurichten.

    Du hast mich im Thread überzeugt, dass es sinnvoll ist eine Sendergruppe anzulegen. Warum darf dieser Prozess nur im Forum passieren und nicht durch das Tool selbst.

    Wenn es also nur die "All Channels" Gruppe gibt, dann ist das halt so. Um ein einziges Mal (öfter ist das ja in aller Regel nicht nötig) sein EPG einzurichten wird niemand seine kompletten TV Einstellungen umwerfen. Wozu auch?

    Mir geht es vielmehr (wie schon oft angedeutet) um neue User des EPG-Buddy, wie ich es war. Die sollten schon geführt/unterstützt werden und wenn Du mich überzeugt hast eine eigene Sendergruppe anzulegen, dann funktioniert das auch bei Anderen (wenn sie darüber "informiert" werden).

    Es ist nur so, das sich dort ein Fehler eingeschlichen hatte, der ein Fallback auf die "All Channels" Gruppe, wenn es sonst keine gibt, verhindert hat.

    Ist diese Aussage auf den MySQL-Teil bezogen? Wenn ja, dann verstehe ich die Aussage mit dem verhinderten Fallback nicht.

    Schließlich hatte ich insgesamt nur 2 Stunden Zeit, um die ganze MySQL Geschichte einzubauen. Denn nur so lange hatte ich einen MP1 TV Server zur Verfügung. In dieser Zeit musste ich den entsprechenden Rechner aber auch noch "reparieren", denn nur deswegen hatte ich ihn hier... Dieser Fehler ist im Nachhinein halt sehr schwer zu beseitigen, da ich eben nichts mehr ausprobieren kann, weil ich keine entsprechende Datenbank zur Verfügung habe. Bei SQLite, (dem einzigen, das ich testen kann und das ich brauche) funktioniert der Fallback einwandfrei. Genau das und nur das wollte ich eigentlich auch für die anderen Datenbanken erreichen, und zwar ohne bei jedem Start genervt zu werden.

    Es ist wie schon mehrfach gesagt, keine persönliche Kritik. Das Tool ist toll und Du hast viel Arbeit reingesteckt. Das will ich auch auf keinen Fall kleinreden und habe es auch in keinem Post getan. Man sollte als Programmierer aber immer open-minded und frei von Emotionen für Anregungen bleiben, denn nur so geht's auch mit dem Produkt vorwärts.
    Du darfst auch gern nach Hilfe fragen. Es ist nicht verboten hier zu Fragen, ob jemand aushelfen/testen/programmieren kann. Ein Aufruf hier im Forum/Thread a la "Wer hat das und jenes System mit dieser und jener Konfig. und kann folgendes mal testen" ist doch sicher keine schlechte Idee.
    Dass Du die selbe Funktionalität zwischen den unterschiedlichen Datenbanken haben willst, lese ich jetzt zum ersten Mal. Das ist mal eine (gute) Ansage. Ich bin gern bereit, hier zu helfen. Meines Erachtens sollte man dazu die 3 DB-Anbindungen analysieren und die Abfragen funktionell gleichziehen.

    Ganz ehrlich, dann nutze das Tool einfach nicht statt rum zu stänkern.

    Was hat objektives Diskutieren mit stänkern zu tun? Bitte mal wieder etwas beruhigen.

    Jetzt wirst du aber völlig widersprüchlich. Wer hat denn diese überflüssige MessageBox eingebaut? Ich nicht, im Gegenteil. Ich habe sie wieder raus genommen.

    Hast Du mein Post richtig gelesen? Zwischen 1 und 20 MsgBox'en ist für mich ein riesen Unterschied. Außerdem hatte ich ja den Vorschlag nach einer "Nicht nochmal fragen"-Option gegeben, aber Du nimmst es gleich wieder voll persönlich, was ich überhaupt nicht verstehen kann. (Zumindest kommt es so rüber, wenn ich Sätze wie "wer hat das denn getan? ja wer?" lese).
    Versteh mich nicht falsch. Ich bestehe nicht auf die MsgBox. Wenn ich aber bei Nachfragen keine Argumente bekomme, außer sowas wie "das ist Mist", "es nervt" und es keine proaktive Suche nach möglichen Alternativen gibt, dann ruft es bei mir Unverständnis hervor. Ich sehe eine Notwendigkeit den User auf eine klügere Konfiguration hinzuweisen. Das visuelle Mittel darf gern diskutiert werden. Ich bin nicht beratungsresistent.

    Genau dieser Mist ist der Grund, warum ich von Anfang an "Bauchschmerzen" dabei hatte, überhaupt etwas für MP1 mit einzubauen.

    Diese Aussage ist eigentlich völlig überflüssig. Persönliche Emotionen gehören hier nicht rein.
    MP1 ist doch jetzt kein Sündenbock, nur weil es mal etwas schwierig wird oder man es selbst nicht adhoc lösen kann. Zumal es von der grundsätzlichen Funktion nicht anders als bei SQLite ist. Klar die Tabellen, Abfragen sind im Detail möglicherweise anders, aber wie schon mehrfach gesagt, frag nach Hilfe/Unterstützung.
    Ich und (sicher) viele andere sind froh, dass die MP1-Unterstützung enthalten ist. Also, jetzt bitte nicht den Kopf in den Sand stecken.

    Neue Testversion im Anhang. Hoffentlich funktioniert es jetzt.

    Das klingt, als ob das Tool ein "ungeliebtes" Kind ist. Ich hoffe dem ist nicht so und Stimmung wird wieder etwas heiterer.

    Gesendet von meinem SM-T700 mit Tapatalk
     

    Toddi

    MP Donator
  • Premium Supporter
  • December 29, 2008
    54
    18
    Kiel
    Home Country
    Germany Germany
    Das stimmt, aber nicht jedes Array enthält im ersten Element auch die ersten "Nutzdaten". Gerade bei vielen Datenbank- Abfragen steht im ersten Element eines solchen Arrays der Name der entsprechenden Spalte aus der Datenbank. Genau wie bei Exel, wenn man die erste Reihe als Überschrift für die einzelnen Tabellenspalten verwendet. So ist das auch bei der AutoIt Implementation von SQLite und wohl auch bei MySQL. Deswegen muss man bei SQLite nicht mit 0 sondern mit 1 anfangen. Da ich nicht wissen konnte, dass das bei MSSQL anders ist, hatte ich halt die Werte von SQLite übernommen... Hätte ich das testen können, wäre mir das sicher selbst aufgefallen und ich hätte es entsprechend angepasst.
    Ah, OK, das war mir so nicht klar. Die ganze MSSQL-Funktion hatte ich Dir ja auch als funktionierend gegeben, wohlwissend, das Du das nicht testen kannst. Das war also sowieso mein Bug und nicht Deiner. In keinem Fall wollte ich Dich kritisieren oder auch nur mehr Arbeit machen.
    Die Idee des Fallbacks auf "All Channels", wenn es keine Sender in anderen Gruppen gibt, finde ich übrigens super.
    Die neue Testversion funktioniert perfekt(y)
     

    Flo70

    Portal Member
    January 14, 2014
    34
    5
    Home Country
    Germany Germany
    Ich hab ein etwas komisches Problem mit EPG Buddy - aktuell bekomme ich bei einigen Sendern (SAT.1, PRO7, Pro7Maxx und Kabel1, also alles aus der selben Senderfamilie) nur einen Teil des EPG (bis zum 22.1 bis ca. 1:00 früh), die anderen Sender sind gefüllt bis zum eingestellten Maximum von 14 Tagen. Wenn ich in der aktuellen XML-Datei schaue, die XMLTV importiert sind alle Daten auch für die o.g. Sendergruppe drin - importiert werden sie aber scheinbar nicht.
    Der XMLTV-Import scheint sich an irgendwas zu verschlucken - aber an was kann ich aus den zur Verfügung stehenden LOGs nicht herauslesen.

    Hat jemand eine Idee? Welche Files könnte ich Euch hochladen?

    Ciao, Flo
     

    Users who are viewing this thread

    Top Bottom