Announcement

Collapse
No announcement yet.

Mit PDA Daten an PHP senden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    War auch nur der Vollständigkeit halber.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #17
      Noch eine letzte Hürde:

      Ist es möglich ein POST oder GET direkt von vb an php zu senden? Wenn ja, mit welchem befehl ereiche ich es? über ein codebeispiel würde ich mich freuen. DLL's dürfen nur aus dem .NET Framework aufgerufen werden. Auf dem PDA läuft ein Compact Framework 1.1.

      Comment


      • #18
        Hallo,

        zB http://en.csharp-online.net/HTTP_Post

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #19
          Hallo nochmal

          Erstmal Danke für die Hilfe die ich hier bekommen habe, ohne die hätte ich das wohl nicht geschafft.
          Es gibt noch ein kleines Problem mit einem SELECT den ich auf dem PDA mache. Ich hoffe ihr könnt mir weiterhelfen
          PS: in der Variable DiamobSQLDB ist der Name der DB eingetragen, in DiamobSQLFile der Pfad
          Code:
                  Dim conn As New Data.SqlServerCe.SqlCeConnection("Data Source =" & ConfigVar.DiamobSQLFile & ConfigVar.DiamobSQLDB)
                  Dim vKundennummer As String
                  Dim test1() As Data.SqlServerCe.SqlCeDataReader
                  Dim test2() As Data.SqlServerCe.SqlCeDataReader
                  Dim test3() As Data.SqlServerCe.SqlCeDataReader
                  Dim test4() As Data.SqlServerCe.SqlCeDataReader
                  Dim test5() As Data.SqlServerCe.SqlCeDataReader
                  Try
                      conn.Open()
                      vKundennummer = InputBox("Bitte Kundennummer angeben.", "Eingabeaufforderung")
                      Dim sel1 As New Data.SqlServerCe.SqlCeCommand("SELECT KndNr  FROM localsav WHERE KndNr = '" & vKundennummer & "'", conn)
                      Dim sel2 As New Data.SqlServerCe.SqlCeCommand("SELECT KndArtNr  FROM localsav WHERE KndNr = '" & vKundennummer & "'", conn)
                      Dim sel3 As New Data.SqlServerCe.SqlCeCommand("SELECT Lagerort  FROM localsav WHERE KndNr = '" & vKundennummer & "'", conn)
                      Dim sel4 As New Data.SqlServerCe.SqlCeCommand("SELECT maxmenge  FROM localsav WHERE KndNr = '" & vKundennummer & "'", conn)
                      Dim sel5 As New Data.SqlServerCe.SqlCeCommand("SELECT Menge  FROM localsav WHERE KndNr = '" & vKundennummer & "'", conn)
                      test1 = sel1.ExecuteReader()
                      test2 = sel2.ExecuteReader()
                      test3 = sel3.ExecuteReader()
                      test4 = sel4.ExecuteReader()
                      test5 = sel5.ExecuteReader()
                      MessageBox.Show(test1(0).GetString(0))
                      MessageBox.Show(test2(0).GetString(0))
                      MessageBox.Show(test3(0).GetString(0))
                      MessageBox.Show(test4(0).GetString(0))
                      MessageBox.Show(test5(0).GetString(0))
                  Catch err As Exception
                      MessageBox.Show("Datensätze nicht gefunden", "DIALOG mobil")
          
                  End Try
                  conn.Close()
          Als Fehlerausgabe erhalte ich
          Code:
          Der Wert vom Typ "System.Data.SqlServerCe.SqlCeDataReader" kann nicht zu "1-dimensionales Array von System.Data.SqlServerCe.SqlCeDataReader" konvertiert werden.	C:\Dokumente und Einstellungen\vandeyk\Desktop\lernen\DeviceApplication1\DeviceApplication1\frm_Erfassen.vb
          Danke für eure Hilfe!

          Gruß,
          MrM^

          Comment


          • #20
            Hallo,

            statt
            Code:
            Dim test1() As Data.SqlServerCe.SqlCeDataReader
            verwende
            Code:
            Dim test1 As Data.SqlServerCe.SqlCeDataReader
            Anmerkung:
            Du hast das ganze in einem try-catch-Block. Gut so. Besser ist noch ein Finally nach dem catch. Dort dann die Connection schließen. So wird dieses auf jeden Fall aufgerufen - was bei einem Fehler nicht sicher gestellt ist.
            Code:
            Try
                        conn.Open()
                       ...
                    Catch err As Exception
                        MessageBox.Show("Datensätze nicht gefunden", "DIALOG mobil")
                    Finally
                            conn.Close()
                    End Try
            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #21
              Danke für den Tip mit finally, habs jetzt an jeder stelle eingebunden.
              allerding bekomme ich im moment immernoch bei
              Code:
              test1 = sel1.ExecuteReader()
              test2 = sel2.ExecuteReader()
              test3 = sel3.ExecuteReader()
              test4 = sel4.ExecuteReader()
              test5 = sel5.ExecuteReader()
              Die Ausgabe
              Code:
              Die von .NET Compact Framework verwendete Version unterstützt kein spätes Binden.	C:\Dokumente und Einstellungen\vandeyk\Desktop\lernen\DeviceApplication1\DeviceApplication1\frm_Erfassen.vb
              Kann man die Bindung irgendwie umgehen? Wenn ja, wie stelle ich das an?

              EDIT:
              Ich meine natürlich, kann ich die arrays im vorfeld binden, ohne binden geht nicht

              Comment


              • #22
                Exemplarisch:
                [highlight=vb.net]
                Dim conn As New SqlCeConnection()
                Dim dr As SqlCeDataReader
                Dim cmd As New SqlCeCommand()

                Try
                conn.Open()
                dr = cmd.ExecuteReader()

                Catch ex As Exception
                Finally
                conn.Close()
                End Try
                [/highlight]

                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #23
                  Ich habe festgestellt, das das problem weiter unten bei den MessageBoxen liegt. im endeffekt will ich mit dem records die textfelder füllen. hier würde ich noch einmal hilfe benötigen. Mit getString habe ich es schon versucht, aber da bekomme ich probleme mit dem Framework.

                  Comment


                  • #24
                    Hallo,

                    hab nochmals deine Abfrage angesehen. Das kannst du anders/effektiver lösen.

                    Dies zu erklären wäre hier zu aufwändig - deshalb verweise ich auf die Einführung im Galileo OpenBook -> http://openbook.galileocomputing.de/...427810295d9dd6

                    mfG Gü
                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                    Comment


                    • #25
                      Hallo,
                      Ich hab den Fehler gefunden.
                      Da ich den .read befehl vergessen habe, ist der cursor nicht in die erste zeile gesprungen. Jetzt selektiert er die daten.

                      Die lokale Dateiverwaltung funktioniert nun einwandfrei.
                      Da ich jetzt allerdings eine Textdatei ausgebe, die in einem Ordner mit dem Namen out\ gesichert wird, muss ich den php code vermutlich umdisponieren. Muss ich jetzt das ftp:// oder das http:// protokoll verwenden, oder ist das hinfällig? ( ich möchte post verwenden).

                      Gruß, MrM^

                      Comment


                      • #26
                        POST gibts nur bei HTTP (und im Briefverkehr ).

                        mfG Gü
                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                        Comment


                        • #27
                          Eine Frage habe ich. Ist es duch die CESQLLITE DB vorgegeben dass man im Select Command nur einen Wert abfragen kann? Denn im Endeffekt setzt du ja jetzt fünf Reader ein obwohl doch wohl einer reichen würde der dir alle Spalten auf einmal ausliest?
                          Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

                          Comment


                          • #28
                            Das habe ich bereits getan, dennoch vielen Dank für den Tipp

                            Comment


                            • #29
                              Ein letztes Problem habe ich noch. Es handelt such um den Code, der für das senden der Daten verantwortlich ist. Hier der Code:
                              [highlight=vb.net]
                              Cursor.Current = Cursors.WaitCursor

                              Dim POSTstring As String = ""
                              Dim i As Integer


                              Dim conn As New Data.SqlServerCe.SqlCeConnection("Data Source =" & ConfigVar.DiamobSQLFile & ConfigVar.DiamobSQLDB)
                              Dim sendselect As New Data.SqlServerCe.SqlCeCommand("SELECT * FROM localsav where bearbeitet='1'", conn)
                              Dim eraser As New Data.SqlServerCe.SqlCeCommand("TRUNCATE TABLE localsav")
                              Try
                              conn.Open()
                              Dim read As Data.SqlServerCe.SqlCeDataReader
                              read = sendselect.ExecuteReader()
                              While read.Read
                              For i = 0 To 4
                              POSTstring = POSTstring & read.Item(i)
                              Next
                              End While
                              read.Close()

                              Dim phpconnect As WebRequest = WebRequest.Create("http://192.168.200.109/senden_neu.php")
                              phpconnect.Method = "POST"
                              Dim encodedPOST As Byte() = Encoding.UTF8.GetBytes(POSTstring)
                              phpconnect.ContentType = "application/x-www-form-urlencoded"
                              phpconnect.ContentLength = POSTstring.Length
                              phpconnect.GetRequestStream().Write(encodedPOST, 0, encodedPOST.Length)
                              Dim response As WebResponse = phpconnect.GetResponse

                              Dim reader As New StreamReader(response.GetResponseStream())
                              Dim Antwort As String = reader.ReadToEnd
                              MessageBox.Show(Antwort)

                              reader.Close()
                              response.Close()
                              Catch err As Exception
                              MessageBox.Show("Fehler!" & vbCrLf & err.Message)
                              Finally
                              conn.Close()
                              Cursor.Current = Cursors.Default

                              End Try

                              [/highlight]

                              Bei der ausführung des Programms auf dem PDA teilt dieses mir folgendes mit:
                              Code:
                              Could not find Resource Assembly
                              Folgende Verweise habe ich eingebunden:
                              [highlight=vb.net]
                              System
                              System.Data
                              System.Data.SQLServerCE
                              System.Drawing
                              System.Web.Services
                              System.Windows.Forms
                              System.Xml
                              [/highlight]

                              Fehlt noch ein wichtiger Verweis, oder sind noch einige Syntaxfehler im Code?
                              Ich hoffe ihr könnt mir noch einmal helfen.
                              Gruß,
                              MrM^
                              Zuletzt editiert von MrM^; 21.10.2008, 13:08.

                              Comment


                              • #30
                                ich meine dass der fehlende Verweis auf System.Net zeigen müsste. Da ich die webrequest Klasse nur in diesem Namespace finden kann. Vielleicht irre ich mich aber auch!

                                Mir ist aber noch etwas aufgefallen:
                                Code:
                                phpconnect.ContentLength = POSTstring.Length
                                meines wissens muss für die Property ContentLength der Webrequestklasse die Anzahl der zusendenen Bytes angegeben werden. Nicht die String länge. Nun ich bin mir aber auch nicht Sicher ob vielleicht beides gleich ist. Dennoch glaube ich du solltest besser das hier benutzen:
                                Code:
                                phpconnect.ContentLength = encodedPOST.Length
                                Zuletzt editiert von das-d; 21.10.2008, 12:25.
                                Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

                                Comment

                                Working...
                                X