Livecode-Server auf MS Datenbank

Startseite Foren Deutsches LiveCode-Forum Livecode-Server auf MS Datenbank

Ansicht von 21 Antwort-Themen
  • Autor
    Beiträge
    • #20614
      Manu765
      Teilnehmer

        Hallo allerseits,

        sofern es ein ähnliches Anliegen schonmal gab, verzeiht mir. Ich hab leider nichts passendes gefunden.

        Die Situation ist folgende. Wir haben im Netzwerk auf einem MS Server 2012 eine Datenbank liegen. Wir möchten mit einer über Livecode erstellte App Daten austauschen. Als Webserver ist ein Apache auf Linux vorhanden. Hier soll der LiveCode-Server für den Austausch zwischen Datenbank und App integriert werden.

        Leider kann ich immer nur sehr oberflächliche Tutorials für diese Thematik finden. Auch Script-Beispiele finde ich fast nur für:
        HTML->LC-Server->Datenbank
        oder
        App->PHP-Webservice->Datenbank
        aber nicht für
        App->LC-Server->Datenbank

        Kann mir jemand Quellen für Infomaterial oder konkrete Script-Beispiele nennen?

        Als mögliches Szenario stelle ich mir vor, dass man über die App einen Wert per GET oder POST an den Service übergibt. Dieser filtert dann die Datenbank mit diesem Wert und einer entsprechenden Abfrage und die App holt sich dann das Ergebnis.

        Ich finde die gefundene Dokumentation für den LC-Server sehr dürftig oder hab ich da was übersehen?

        Vielen Dank vorab für die Hilfe.
        Manuel

      • #20616
        Klaus Major
        Administrator
        • #20618
          Manu765
          Teilnehmer

            Hallo Klaus und vielen Dank für das schnelle Feedback.

            Ja, die Seiten kenn ich alle. Ich finde, die gehen immer etwas an dem vorbei, was ich suche.

            Also ich hab kein Problem systemintern in der LC-IDE auf die Datenbank zu kommen und eine beliebige Abfrage zu starten und das Ergebnis ausgeben zu lassen. Aber mit dem LC-Server dazwischen läufts ja etwas anders, ich muss ja mit der App das entsprechende Serverscript ansprechen und das wiederum die Datenbank.
            Und da steh ich grad etwas auf dem Schlauch und find auch nicht wirklich viel dokumentiert.

          • #20619
            Klaus Major
            Administrator

              Hi Manuel,

              ach so, OK.

              Aber die Skripte zum Datenbankzugriff auf dem Server sind genau so wie in der IDE!
              Nur PUTtest Du die Daten nicht in ein Feld sondern einfach so:

              ...
              put revdatafromquery(...) into tData
              put tData
              ...

              Und es gibt keine genauen Spezifikationen, wie Du mit der App mit dem Server kommunizieren sollst,
              also erfinde irgendwas dafür, Du musst ja nur mit Dir/Deiner App kompatibel sein.

              Gruß

              Klaus

            • #20621
              Manu765
              Teilnehmer

                OK, danke.
                Dann versuch ich das mal.

              • #20635
                Manu765
                Teilnehmer

                  Hallo, leider ich nochmal.

                  Hab mal folgendes Script geschrieben:

                  <?lc
                  put revOpenDatabase(“ODBC”,”DRIVER=SQL Server;SERVER=192.168.0.5;DATABASE=Gutachten_up;UID=’Webuser’;PWD=XXXXXXXXXX;Trusted_Connection=Yes”,,,) into tDatabaseID

                  put “SELECT [PK-Nr], Auftragsart FROM Schaden WHERE [PK-Nr]=319123” into tQuery

                  if tDatabaseID is a number then
                  put revDataFromQuery(tab, return, tDatabaseID, tQuery) into tData
                  put tData
                  end if

                  revCloseDatabase tDatabaseID
                  ?>

                  Offensichtlich kann keine Verbindung mit der Datenbank hergestellt werden. Bei einer Test-App die tData anzeigen soll bleibt die Anzeige leer.

                  Bei Aufruf über den Browser kommt:
                  row 11, col 1: External handler: exception (revdberr)
                  row 11, col 1: Handler: can’t find handler (revCloseDatabase)

                  Werden irgendwo Log-Files erstellt, so dass man der Sache auf den Grund gehen kann?

                  Hat vielleicht jemand eine Idee?

                  Gruß, Manuel

                • #20636
                  Klaus Major
                  Administrator

                    Lass Dir mal tDatabaseID anzeigen, vielleicht gibt das einen Hinweis, was falsch läuft:

                    <?lc
                      put revOpenDatabase("ODBC","DRIVER=SQL Server;SERVER=192.168.0.5;DATABASE=Gutachten_up;UID='Webuser';PWD=XXXXXXXXXX;Trusted_Connection=Yes",,,) into tDatabaseID
                      put tDatabaseID
                    ?>

                    Ich habe noch nie mit HTML5 Export gearbeitet, die gibt es nur in der Community oder als kostenpflichiges Extra, vielleicht musst Du da auch die “Inclusions” manuell hinzufügen?
                    Also die Datenbak Library?
                    Dieser Automatismus “Search for inclusions” klappt schon auf dem Desktop nicht 100%ig.

                  • #20644
                    Manu765
                    Teilnehmer

                      Danke vielmals für die schnelle Antwort.

                      Also bei folgendem Script:
                      <?lc
                      put revOpenDatabase(“ODBC”,”DRIVER=SQL Server;SERVER=192.168.0.5;DATABASE=Gutachten_up;UID=’Webuser’;PWD=XXXXXXXXXXX;Trusted_Connection=Yes”,,,) into tDatabaseID
                      put tDatabaseID
                      ?>

                      kommt in der APP nichts an und der Browser zeigt:
                      [iODBC][Driver Manager]Data source name not found and no default driver specified. Driver could not be loaded

                      Wie includiere ich nochmal die Datenbank-Library? Habs zwar schonmal gelesen, kanns aber grad nicht finden.

                    • #20645
                      Klaus Major
                      Administrator

                        Aha, also fehlen die Treiber…

                        In den “Standalone Application Settings” “Select inclusions for the standalone application” anklicken und bei “Inclusions” alle benötigten Dinge anklicken.

                      • #20647
                        Manu765
                        Teilnehmer

                          Betrifft das nicht nur die App?

                          Das Problem scheint ja im LC-Server (Script) zu liegen. Gibts da nicht auch einen Befehl “include …” für Datenbank, oder täusch ich mich da?

                        • #20650
                          Klaus Major
                          Administrator

                            Auch die HTML Version benötigt diverse Treiber etc.
                            Aber mit “include” bekommst Du sie noch darein, das geht nur über “Inclusions”.

                            Das Serverskript ist ja in Ordnung, es fehlen halt die Treiber, wie die Fehlermeldung klar besagt.

                          • #20652
                            Axwald
                            Teilnehmer

                              Hallo,

                              soweit ich das beurteilen kann:
                              Um mit dem LC-Server (der läuft auf Linux, richtig?) ODBC benutzen zu können, müssen die ODBC-Treiber für SQL Server auf dem System (Linux dann) installiert sein. Sonst geht nix.

                              Viel Spaß!

                            • #20654
                              Klaus Major
                              Administrator

                                Aha, das auch noch…
                                Tja, dann mal viel Glück, Manuel!

                              • #20656
                                Manu765
                                Teilnehmer

                                  Danke an Klaus, ich glaub, das hab ich missverständlich ausgedrückt. Es geht nicht um eine html5-Verion der App sondern es ist lediglich der Browseraufruf des Scripts.

                                  Ebenfalls danke an Axwald, in die Richtung hab ich auch grad schon recherchiert. Auch wenn die Datenbank nicht auf dem Linuxsystem läuft sondern nur der Apache müssen die Treiber installiert sein? Versteh ich das richtig?
                                  Muss ich dann mal klären, ob das schon gemacht ist…es läuft auf dem Apache bereits ein PHP-Webservice, der auf andere Bereiche der Datenbank zugreift.

                                • #20657
                                  Klaus Major
                                  Administrator

                                    Danke an Klaus, ich glaub, das hab ich missverständlich ausgedrückt. Es geht nicht um eine html5-Verion der App sondern es ist lediglich der Browseraufruf des Scripts.

                                    Das SKript und der Browseraufruf sind OK, aber die darunterliegende Engine, hier ein riesiger Sack mit JavaScript etc., benötigt diese Treiber wie eine “normale” Desktop Runtime auch.
                                    Die Fehlermeldungen des Servers sind allerdings vielleicht nicht besonders aussagekräftig und irreführend.

                                  • #20659
                                    Axwald
                                    Teilnehmer

                                      Hallo,
                                      wenn Du mit einem LC Client (das ist in dem Fall der LC Server) ODBC benutzen willst, muss auf dem System der ODBC-Treiber installiert sein.

                                      Vereinfacht: LC ruft ODBC auf & sagt welche Verbindung es will, ODBC erstellt diese dann & gibt LC eine “ConnectionID”.

                                      Wo die Datenbank läuft ist in dem Zusammenhang (für LC) egal, das wird in den ODBC-Parametern festgelegt.

                                      Viel Spaß!

                                    • #20672
                                      Manu765
                                      Teilnehmer

                                        Ok, danke dir. Wird bestimmt spaßig. Habs mal delegiert… 😉

                                        Ich hätte noch eine Frage zur Kommunikation zwischen LC-Server und APP.

                                        Ich hab jetzt mal als Beispiel ein ganz einfaches Serverscript:

                                        <?lc
                                        put “Text” into tData
                                        put tData
                                        ?>

                                        laut Livecode Academy (zumindest versteh ich das so) brauch ich in der App folgendes (Button)-Script um mir das zu holen:

                                        on mouseUp
                                        put url “https://…/test.lc&#8221; into tData
                                        answer tData
                                        end mouseUp

                                        Das Answer-Fenster bleibt jedoch leer. Wenn ich die Seite über den Browser aufrufe wird “Text” angezeigt. Selbst im Browser-Widget wird “Text” angezeigt, wenn ich das damit teste.

                                        Wo liegt der (Denk)-Fehler?

                                        Danke schonmal.
                                        Viele Grüße, Manuel

                                      • #20680
                                        Klaus Major
                                        Administrator

                                          Probiere es mal mit ein paar HTML-Tags:

                                          <html>
                                          <body>
                                          <?lc
                                            put "<p>El Testo!</p>"
                                          ?>
                                          </body>
                                          </html>
                                        • #20681
                                          Klaus Major
                                          Administrator

                                            Probiere es mal mit ein paar HTML-Tags:

                                            <html>
                                            <body>
                                            <?lc
                                              put "<p>El Testo!</p>"
                                            ?>
                                            </body>
                                            </html>
                                          • #20684
                                            Manu765
                                            Teilnehmer

                                              Brachte leider keinen Erfolg.

                                              Kann es sein, dass Livecode mit https nicht klarkommt und http braucht?

                                            • #20685
                                              Manu765
                                              Teilnehmer

                                                Ich geb mal selber die Antwort 😉

                                                In der App muss die Abfrage lauten:

                                                on mouseUp
                                                libURLSetSSLVerification false
                                                put url “https://…/test.lc&#8221; into tData
                                                answer tData
                                                end mouseUp

                                                Danke für die Mühe.

                                              • #20686
                                                Klaus Major
                                                Administrator

                                                  Hey, gut beobachtet, wäre ich ja im Leben nicht drauf gekommen! 🙂

                                                  Bzw. ich hatte verdrängt, daß die Community Version nicht mit dem External tsNet daherkommt, sondern auf die Scriptlibrary “libUrl” aufbaut, die diese erfoderliche Verifizierung der Seite nicht unterstützt. Das External hingegen macht das schon.
                                                  Und genau da ist diese Zeile bei httpS Seiten erforderlich!

                                              Ansicht von 21 Antwort-Themen
                                              • Du musst angemeldet sein, um auf dieses Thema antworten zu können.