Report von Programm zu Programm senden.

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von der_Frank.

    Report von Programm zu Programm senden.

    Hallo,

    wenn das der Falsche Bereich ist bitte Moven.
    ----
    Ich habe einen Code geschrieben der Sowas wie ein Report System sein soll.
    Man soll alles Eintragen und wenn man auf Absenden drückt soll man es auf einem Anderem Programm bekommen... Wie soll ich das machen?
    Ich habe immoment alles mit E-Mail system.

    VB.NET-Quellcode

    1. Imports System.Net.Mail
    2. Public Class Form1
    3. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    4. TextBox1.Clear()
    5. RichTextBox1.Clear()
    6. End Sub
    7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    8. Dim smtpServer As New SmtpClient()
    9. Dim mail As New MailMessage()
    10. smtpServer.Credentials = New Net.NetworkCredential("******@web.de", "********") 'Passwort
    11. smtpServer.Port = 587
    12. smtpServer.Host = "smtp.web.de"
    13. smtpServer.EnableSsl = True
    14. mail = New MailMessage
    15. mail.From = New MailAddress("******@web.de")
    16. mail.To.Add("********@web.de")
    17. mail.Subject = "Neuer Report"
    18. mail.Body = "Name des Angeklagten: " & TextBox1.Text + vbNewLine & "Datum des Verbrechens: " & DateTimePicker1.Text + vbNewLine & "Art: " & ComboBox1.Text + vbNewLine & "Beschreibung: " & RichTextBox1.Text + vbNewLine & "Mit freundlichen Grüßen" + vbNewLine & "Auto. Report System"
    19. smtpServer.Send(mail)
    20. MsgBox("Der Report wurde an alle Admins gesendet.")
    21. End Sub
    22. End Class

    FerienFreak schrieb:

    Anderem Programm

    Ein anderes Programm auf deinem PC, eine andere Instanz deines Programmes auf deinem PC, ein anderes Programm auf einem anderen PC oder eine Instanz deines Programmes auf einem anderen PC?

    LG
    Moin moin,

    hast du das "Empfängerprogramm" auch in VB geschrieben? Wenn ja, kannst du deine Werte als Strings beim Prozessaufruf durch

    VB.NET-Quellcode

    1. Dim myPath As String = "Anwendung.exe"
    2. Dim pr As New Process
    3. pr.StartInfo.FileName = myPath
    4. ' Reihenfolge der Startparameter:
    5. ' Anrede ausgewertet (1=Herr, 2=Frau) , Name, Vorname, Geburtsdatum, Strasse, Hausnummer, Plz, Ort, Telefon, EMail, IBAN, BIC, Briefanrede, Tarif_seit
    6. Dim args As String = ""
    7. If dt.Rows(pos).Item("Anrede") = "Herr" Then args = args & """1"" "
    8. If dt.Rows(pos).Item("Anrede") = "Frau" Then args = args & """2"" "
    9. args = args & """" & Kd_Name.Text & """ "
    10. args = args & """" & Kd_Vorname.Text & """ "
    11. args = args & """" & kd_Geburtsdatum.Text & """ "
    12. args = args & """" & Kd_Strasse.Text & """ "
    13. args = args & """" & Kd_Hausnummer.Text & """ "
    14. args = args & """" & Kd_Plz.Text & """ "
    15. args = args & """" & Kd_Ort.Text & """ "
    16. args = args & """" & Kd_Telefon.Text & """ "
    17. args = args & """" & Kd_EMail.Text & """ "
    18. args = args & """" & Kd_IBAN.Text & """ "
    19. args = args & """" & Kd_BIC.Text & """ "
    20. args = args & """" & Kd_Briefanrede.Text & """ "
    21. args = args & """" & Kd_Tarif_seit.Text & """ "
    22. pr.StartInfo.Arguments = args
    23. pr.Start()
    24. pr.WaitForExit()
    25. pr.Close()


    übergeben und beim "Empfängerprogramm durch .... (Auszug aus meinem Code)

    VB.NET-Quellcode

    1. ' Startparameter abrufen
    2. Dim params() As String = Environment.GetCommandLineArgs()
    3. If params.Count >= 2 Then
    4. Try
    5. If params(1).ToString = "1" Then VN_Herr.Checked = True
    6. If params(1).ToString = "2" Then VN_Frau.Checked = True
    7. VN_Name.Text = params(2).ToString
    8. VN_Vorname.Text = params(3).ToString
    9. VN_Geb.Text = params(4).ToString
    10. VN_Strasse.Text = params(5).ToString
    11. VN_Hausnummer.Text = params(6).ToString
    12. VN_PLZ.Text = params(7).ToString
    13. VN_Ort.Text = params(8).ToString
    14. VN_Telefon.Text = params(9).ToString
    15. VN_Email.Text = params(10).ToString
    16. IBAN.Text = Mid(params(11).ToString, 3)
    17. BIC.Text = params(12).ToString
    18. Briefanrede = params(13).ToString
    19. Beginnjahr = Date.ParseExact(params(14).ToString, "dd.MM.yyyy", Nothing).Year
    20. Catch ex As Exception
    21. End Try


    auslesen.

    .... Falls ich dich richtig verstanden sollte ;)

    eine andere Lösungsansatz wäre vllt ein Datenbänkchen für die Verbrecherkartei-> das Empfängerprogramm synchronsiert sich mit dieser beim Start.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Frank“ ()

    Moin,

    Sicherheit: Gefahrenquelle Quellcode
    Sieh zu, dass Du Dir ein PHP-Script zulegst und das darüber machst, dann brauchst Du im Client keine Credentials.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Jo, falls der User bei seiner Mail-Geschichte bleiben will.
    Bei Programmen aufm lokalen PC würde ich IPC nehmen und sonst TCP.

    Aber da der User ja auf Fragen wie "welchen Apfel willst du" mit "Pudding" antwortet, wirds schwer zu helfen ;)!
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Ok,
    ich habe mir vorgenommen es mit einer Datenbank zu machen...
    Ich bin auch recht weit gekommen denke ich doch ich komm nicht klar xD

    VB.NET-Quellcode

    1. ​Imports Admintool.start_admintool
    2. Imports MySql.Data.MySqlClient
    3. Public Class Form1
    4. Public Shared conn As New MySql.Data.MySqlClient.MySqlConnection
    5. Public Shared da As Common.DataAdapter
    6. Dim sql As String
    7. Public Shared Sub abfrage_ausfuehren_start_form(ByVal dieser_sql As String)
    8. Try
    9. conn.ConnectionString = myConnectionString
    10. conn.Open()
    11. da = New MySqlDataAdapter(dieser_sql, conn)
    12. Dim dt As New DataTable
    13. da.Fill(dt) 'Fehler?
    14. Form1.lb_anzahl.Text = dt.Rows.Count.ToString
    15. Form1.DataGridView1.DataSource = dt
    16. conn.Close()
    17. Catch ex As MySql.Data.MySqlClient.MySqlException
    18. MessageBox.Show(ex.Message)
    19. End Try
    20. End Sub
    21. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    22. sql = "SELECT * FROM benutzer"
    23. abfrage_ausfuehren_start_form(sql)
    24. End Sub
    25. End Class

    Hier ist der Fehler Code.
    Ich hoffe ihr könnt helfen.

    Quellcode

    1. ​Fehler 1 Der Wert vom Typ "System.Data.DataTable" kann nicht in "System.Data.DataSet" konvertiert werden. C:\Users\Patrick\Desktop\Visual Basic 2010\Admintool\Admintool\Form1.vb 15 21 Admintool
    Du mixt da auch verschiedenste Typen, ist aber auch egal.
    Verwende PHP, das kann sowohl mit Datenbanken als auch Mail kommunizieren und ist sicher.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich schrieb ja, dass es auch mit Datenbanken kommunizieren kann.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Eine Datenbank ist was anderes, Deine verwendet z. B. als Modul SQL. Mit PhpMyAdmin kannst Du nur darauf zugeifen. Du sollst aber via PHP die MySql ansprechen, weil dann keine Credentials im Code der lokalen Anwendung stehen, mit denen man die Datenbank kapern könnte, sondern dann nur in der PHP und die wird immer ausgeführt, sodass die sicher verstaut sind.

    Das heißt also, Du sollst das nicht mit dem Connector machen, weil sonst jeder damit direkt Zugriff auf Deine Datenbank hat, was ungut ist.
    Der Fehler kommt btw daher, dass Du kein DataSet hast, sondern versuchst, direkt einen DataTable zu füllen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    moin moin ,

    du solltest

    VB.NET-Quellcode

    1. 'in der Klasse:
    2. Dim da As MySqlDataAdapter
    3. Dim dt As New DataTable
    4. '...
    5. '...
    6. '...
    7. 'im load-Ereignis:
    8. Dim conn As New MySqlConnection
    9. Dim myConnectionString As String
    10. myConnectionString = "server=HOST;uid=USER;pwd=PWD;database=DATENBANK; "
    11. conn.ConnectionString = myConnectionString
    12. Try
    13. conn.Open()
    14. Catch ex As Exception
    15. MessageBox.Show("MySQL-Server nicht erreichbar!", "Schwerwiegender Fehler", Nothing, MessageBoxIcon.Error)
    16. Application.Exit()
    17. End Try
    18. ' Dem DataAdapter mitteilen, welches SQL Kommando er ausführen soll
    19. ' und welche Verbindung er dazu verwenden soll
    20. da = New MySqlDataAdapter("SELECT * FROM `TABELLENNAME`", conn)
    21. ' Füllt die DataTable im DataSet mit Daten aus der Datenbank.
    22. ' Der DataAdapter öffnet und schließt die Verbindung zur Datenbank selbst !!
    23. da.Fill(dt)
    24. '...
    25. '...
    26. '...

    deklarieren

    Dann sollte die Verbindung zur MySQL Datenbank laufen, denke ich.

    Viel Erfolg ;)
    Ah, @FerienFreak, es ging gestern ja darum, dass Du dann die Daten holst, dann ist das natürlich was anderes und Du hast recht, dann kannst Du das natürlich so machen, denn dann ist PHP ja nicht nötig. Ich hatte es missverstanden, sorry.
    Hätte ich aber auch gleich draufkommen können, als es darum ging Daten aus der Datenbank zu holen und etwas damit zu füllen.
    Dann vergiss, was ich sagte, hag sich erledigt ^^

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @TE: Falls du vb.net proggen möchtest, dringend empfohlen: Visual Studio - Empfohlene Einstellungen

    Dann wird dich bereits der Kompiler drauf hinweisen, dass eine DataTable kein Dataset ist. Auf diese Weise kannst du lernen, Datentypen voneinander zu unterscheiden, also imo ist das ühaupt die Vorraussetzung, um .Net programmieren lernen zu könnnen.

    VB.NET-Quellcode

    1. ​Imports Admintool.start_admintool
    2. Imports MySql.Data.MySqlClient
    3. Public Class Form1
    4. Public Shared conn As New MySql.Data.MySqlClient.MySqlConnection
    5. Public Shared da As Common.DataAdapter
    6. Dim sql As String
    7. Public Shared Sub abfrage_ausfuehren_start_form(ByVal dieser_sql As String)
    8. Try
    9. conn.ConnectionString = myConnectionString
    10. conn.Open()
    11. da = New MySqlDataAdapter(dieser_sql, conn)
    12. Dim dt As New DataSet
    13. da.Fill(dt)
    14. Form1.lb_anzahl.Text = dt.Tables.Count.ToString
    15. Form1.DataGridView1.DataSource = dt
    16. conn.Close()
    17. Catch ex As MySql.Data.MySqlClient.MySqlException
    18. MessageBox.Show(ex.Message)
    19. End Try
    20. End Sub
    21. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    22. sql = "SELECT * FROM benutzer"
    23. abfrage_ausfuehren_start_form(sql)
    24. End Sub
    25. End Class


    Ich habe es nun so gemacht.
    ABer wenn ich Debugge dann passiert das, dass er mir

    VB.NET-Quellcode

    1. conn.Connectionstring = myConnectionstring
    anstreicht.

    img3.fotos-hochladen.net/uploads/jach53mgl2.jpg

    Hat jemand ne Idee?
    Gibt es eine InnerException? Die findest Du unter "Details anzeigen..."

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: