Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. MS-SQL Daten in State schreiben

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    MS-SQL Daten in State schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @babba79 last edited by

      @babba79 sagte: in DD.MM.YYYY umwandeln

      setState(idDatum, formatDate(result.result[0].validfrom, 'DD.MM.YYYY'));
      
      B 1 Reply Last reply Reply Quote 0
      • B
        babba79 @paul53 last edited by

        @paul53
        wo genau setze ich das im Skript?

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @babba79 last edited by paul53

          @babba79 sagte: wo genau setze ich das im Skript?

          Anstelle von oder unter Zeile 7.
          Die Variable idDatum muss die ID von State "heutiges_Datum" enthalten.

          B 1 Reply Last reply Reply Quote 0
          • B
            babba79 @paul53 last edited by

            @paul53
            Ich habe mir die States manuell angelegt.
            validfrom=string
            comfortcode=Zahl
            Screenshot 2025-02-10 132003.png

            und das Skript so angepasst: (jedoch mit Fehlermeldung)

            sendTo('sql.0', 'query', 
            'use sag SELECT validfrom, comfortcode FROM dbo.tgcs WHERE DATEADD(DAY, 0, DATEDIFF(DAY, 0, validfrom)) = DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE()))', function (result) {
                  if (result.error) {
                    console.error(result.error);
                } else {
                    // show result
                     console.log('Rows: ' + JSON.stringify(result.result));
            	 setState(0.userdata.heutiges_datum.validfrom, formatDate(result.result[0].validfrom, 'DD.MM.YYYY'));  
                   } 
            });
            

            Fehler im Javaskript-Adapter:

            javascript.0	13:21:42.245	info	Stopping script script.js.common.test_mssql
            javascript.0	13:21:42.246	info	Start JavaScript script.js.common.test_mssql (Javascript/js)
            javascript.0	13:21:42.246	error	script.js.common.test_mssql compile failed: at script.js.common.test_mssql:9
            
            paul53 Codierknecht 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @babba79 last edited by paul53

              @babba79 sagte: mit Fehlermeldung

              Die ID ist falsch. Richtig: 0_userdata.0.heutiges_datum.validfrom
              Im Tab "Protokolle" sind weitere Informationen zu finden.

              B 1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @babba79 last edited by

                @babba79
                Eine ID ist übrigens ein string.
                Zusammen mit @paul53's Anmerkung sollte es so aussehen:

                setState('0_userdata.0.heutiges_datum.validfrom', formatDate(result.result[0].validfrom, 'DD.MM.YYYY'));
                
                1 Reply Last reply Reply Quote 0
                • B
                  babba79 @paul53 last edited by

                  @paul53 sagte in MS-SQL Daten in State schreiben:

                  0_userdata.0.heutiges_datum.validfrom

                  🤦‍♂️ sorry hatte mich vertippt.
                  Aber gleiche Fehlermeldung.

                  Protokoll:

                  javascript.0 2025-02-10 13:37:29.590	error	at process.processImmediate (node:internal/timers:485:21)
                  javascript.0 2025-02-10 13:37:29.590	error	at Immediate._onImmediate (C/:ioBroker\node_modules\iobroker.javascript\main.js:1732:17)
                  javascript.0 2025-02-10 13:37:29.590	error	at C:\ioBroker\node_modules\iobroker.javascript\main.js:2322:17
                  javascript.0 2025-02-10 13:37:29.590	error	at prepareScript (C:\ioBroker\node_modules\iobroker.javascript\main.js:2224:37)
                  javascript.0 2025-02-10 13:37:29.590	error	at createVM (C:\ioBroker\node_modules\iobroker.javascript\main.js:1956:21)
                  javascript.0 2025-02-10 13:37:29.590	error	at new Script (node:vm:117:7)
                  javascript.0 2025-02-10 13:37:29.590	error	SyntaxError: Numeric separator can not be used after leading 0.
                  javascript.0 2025-02-10 13:37:29.590	error	^
                  javascript.0 2025-02-10 13:37:29.590	error	setState(0_userdata.0.heutiges_datum.validfrom, formatDate(result.result[0].validfrom, 'DD.MM.YYYY'));
                  javascript.0 2025-02-10 13:37:29.590	error	script.js.common.test_mssql compile failed: at script.js.common.test_mssql:9
                  javascript.0 2025-02-10 13:37:29.590	info	Start JavaScript script.js.common.test_mssql (Javascript/js)
                  javascript.0 2025-02-10 13:37:28.822	info	Stopping script script.js.common.test_mssql
                  
                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @babba79 last edited by paul53

                    @babba79

                    	 setState('0_userdata.0.heutiges_datum.validfrom', formatDate(result.result[0].validfrom, 'DD.MM.YYYY'), true);  
                    	 setState('0_userdata.0.heutiges_datum.comfortcode', result.result[0].comfortcode, true);  
                    
                    B 2 Replies Last reply Reply Quote 0
                    • B
                      babba79 @paul53 last edited by

                      @paul53 💪 🙏 weltklasse....ich feier dich!

                      Tausend dank für deine Hilfe.

                      1 Reply Last reply Reply Quote 0
                      • B
                        babba79 @paul53 last edited by babba79

                        @paul53
                        eine kleine Frage hätte ich noch.

                        Kann ich in Zeile 3

                        'use sag SELECT validfrom, comfortcode FROM dbo.tgcs WHERE DATEADD(DAY, 0, DATEDIFF(DAY, 0, validfrom)) = DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE()))', function (result) {
                        
                        

                        vorgaukeln, dass es morgen ist? Ich habe ein cron oben im Skript gesetzt, dass das Skript täglich um 0 Uhr startet.

                        '{"time":{"exactTime":true,"start":"00:00"},"period":{"days":1}}'
                        
                        

                        Aber um nicht bis morgen zu warten um es besser zu testen, würde ich gerne manche Tage schon mal testen.
                        Danke für eure Unterstützung.

                        So sieht das ganze jetzt bei mir aus:
                        awtrix.gif

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @babba79 last edited by

                          @babba79 sagte: vorgaukeln, dass es morgen ist?

                          Von SQL habe ich keine Ahnung.

                          B 1 Reply Last reply Reply Quote 0
                          • B
                            babba79 @paul53 last edited by babba79

                            @paul53
                            Try´n Error hats gebracht....Total simpel when man SQL Coden kann 😀 ich kanns jedenfalls nicht.

                            +1 Tag (+1 an der Stelle im Skript einfügen)

                            'use sag SELECT validfrom, comfortcode FROM dbo.tgcs WHERE DATEADD(DAY, 0, DATEDIFF(DAY, 0, validfrom)) = DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE()))+1', function (result) {
                            
                            • 2 Tage
                            'use sag SELECT validfrom, comfortcode FROM dbo.tgcs WHERE DATEADD(DAY, 0, DATEDIFF(DAY, 0, validfrom)) = DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE()))+2', function (result) {
                            
                            

                            Edit:
                            Ich versuche gerade das Skript nach einem Zeitplan auszuführen, bekomme es aber irgenwie nicht hin. Habe oben rechts über die Uhr sowohl den Wizard, als auch Einfach versucht. Zum test auch jede Minute. Tut sich aber nichts.

                            Ich hab auch versucht den javascript Adapter alle Minute neuzustarten....Das klappt ist aber nicht ganz Sinn der Sache. (Denke ich)
                            Hat jemand eine Idee?

                            '{"time":{"exactTime":true,"start":"01:00"},"period":{"days":1,"dows":"[1, 2, 3, 4, 5]"}}'
                            
                            sendTo('sql.0', 'query', 
                            'use sag SELECT validfrom, comfortcode FROM dbo.tgcs WHERE DATEADD(DAY, 0, DATEDIFF(DAY, 0, validfrom)) = DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE()))', function (result) {
                                  if (result.error) {
                                    console.error(result.error);
                                } else {
                                    // show result
                                     console.log('Rows: ' + JSON.stringify(result.result));
                            	 	 setState('0_userdata.0.heutiges_datum.validfrom', formatDate(result.result[0].validfrom, 'DD.MM.YY'), true);  
                                     setState('0_userdata.0.heutiges_datum.comfortcode', result.result[0].comfortcode, true);    
                                } 
                            });
                            

                            @paul53 hast du mir hier ein Tipp?

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            380
                            Online

                            31.8k
                            Users

                            80.0k
                            Topics

                            1.3m
                            Posts

                            3
                            13
                            433
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo