Announcement

Collapse
No announcement yet.

Bild aus Website per Drag&Drop in PictureBox?

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

  • Bild aus Website per Drag&Drop in PictureBox?

    Hallo zusammen,

    hat jemand erfahrung damit, wie man ein Bild aus einer Website per Drag&Drop in eine Picturebox bekommt und das ganze dann am besten noch in einer SQL-Server DB speichert?
    Ich bin jetzt für den ersten Moment ein wenig Planlos.


    EDIT: Könnte das bitte jemand ins VB.net-Forum verschieben? Ich hab da wohl irgendwo falsch geklickt....sorry
    Zuletzt editiert von Andreas Mahr; 20.01.2010, 10:19.

  • #2
    Bitte sehr, ich hatte mich schon gewundert. Zur Sache habe ich aber keine Idee.

    Gruß Jürgen

    Comment


    • #3
      Danke Jürgen!


      Ich bin schon einen Schritt weiter. Ich ziehe mit der Maus das Bild auf meine PictureBox und lasse es da fallen. Ich bekomme aber einen Fehler dann und weiß nicht was ich falsch mache.

      [highlight=vb.net]
      Private Sub CC_Picturebox_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
      If Me.AllowDrop Then
      If e.Data.GetDataPresent("DeviceIndependentBitmap") Then
      Dim oImg As Image = Image.FromStream(e.Data.GetData("DeviceIndependent Bitmap")) <-- Fehler
      Me.Image = oImg
      End If
      End If
      End Sub
      [/highlight]

      Ungültiger Parameter.
      e.Data.GetData("DeviceIndependentBitmap") ist vom Typ System.IO.MemoryStream.

      Was mach ich denn falsch?

      Comment


      • #4
        ok, mit diesem MemoryStream scheint es nicht zu gehen.

        Aber so geht es:
        [highlight=vb.net]
        Private Sub CC_Picturebox_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
        If Me.AllowDrop Then
        If e.Data.GetDataPresent("DeviceIndependentBitmap") Then
        Try
        Me.Image = Image.FromFile(e.Data.GetData("FileName")(0))
        Catch ex As Exception
        ICSalesTrace.ErrorTrace2File(ex.ToString)
        End Try
        End If
        End If
        End Sub
        [/highlight]

        Funktioniert aber nur im IE und Firefox. Über Opera bekommt die Anwendung noch nichteinmal mit, das dort ein Drag-Vorgang läuft. Andere Browser hab ich noch nicht getestet.

        Jetzt bleibt noch die Frage, wie bekomm ich das Bild nun in die Datenbank?

        Comment


        • #5
          Also einen Ansatz hab ich, aber es fliegt mir beim Ausführen des Update-Kommandos um die Ohren.

          [highlight=vb.net]
          Private Sub LoadPicture2Database()
          Dim cmd As New OleDbCommand("UPDATE TM_Person SET Bild = @BLOBData WHERE PersonId=" & Me.AllgProps.Papa.idwert)
          Dim ms As New MemoryStream()
          Me.Image.Save(ms, ImageFormat.Jpeg)
          Dim bytBLOBData() As Byte = ms.ToArray

          Dim prm As New OleDbParameter("@BLOBData", OleDbType.VarBinary, _
          bytBLOBData.Length, ParameterDirection.Input, False, _
          0, 0, Nothing, DataRowVersion.Current, bytBLOBData)

          cmd.Parameters.Add(prm)
          DbGate.ExecuteNonQuery(cmd) <-- Fehler

          End Sub
          [/highlight]

          Error Executing non Query OleDbCommand: UPDATE TM_Person SET Bild = @BLOBData WHERE PersonId=2168 : System.Data.OleDb.OleDbException: Die "@BLOBData"-Skalarvariable muss deklariert werden.
          Hat jemand eine Idee?

          Comment


          • #6
            Das klingt mir jetzt sehr nach einem Problem von Oledb. Benutze für MS-SQL Server den SqlProvider aus System.Data.SqlClient, und viele Probleme lösen sich in Luft auf.

            Gruß Jürgen

            Comment


            • #7
              klingt gut, kann ich aber nicht machen. dafür müsste ich die komplette Anwendung umschreiben.

              Comment


              • #8
                Wenn ich mir dieses Beispiel ansehe, verwendet das ein '?' statt dem Parameternamen. Könnte es daran liegen? Ich verwende ja kein VB, aber die Fehlermeldung deutet darauf hin, dass '@BLOBData' nicht durch den Parameterwert ersetzt wird sondern unverändert als Text zum Server geht. Bin aber kein VB-Anwender, also nur mal geraten ...

                bye,
                Helmut

                Comment


                • #9
                  @Helmut
                  Das mit dem '?' stimmt auf jeden Fall; das hat nichts mit VB zu tun, sondern eben mit dem Oledb-Provider. Der arbeitet im SQL-Befehl nur mit '?', während die Namen der Parameter in der Parameters-Auflistung stehen.

                  Ich habe aber von verschiedenen Versuchen gelesen, wo es auch mit "benamten" Parametern unter Oledb funktioniert.

                  @Andreas
                  Einen Versuch ist das '?' wert. Aber auf Dauer gesehen solltest du unbedingt von Oledb wegkommen (auch wenn dein Argument nicht von der Hand zu weisen ist).

                  Gruß Jürgen

                  Comment


                  • #10
                    So alt wie die Anwendung ist, bin ich froh, das sie überhaupt mit OleDB arbeitet

                    Das mit dem '?' funktioniert, danke.

                    Comment

                    Working...
                    X