Bekomme unterschiedliche Ergebnisse im Management Studio und VB 2010

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Bekomme unterschiedliche Ergebnisse im Management Studio und VB 2010

    Hallo,
    ich sitze schon seit mehreren Tagen an folgendem Problem: Im SQL bekomme ich über das Server Management Studio das richtige Ergebnis: 4. Führe ich das Programm aus, bekomme ich kein Ergebnis. Ich finde den Fehler aber nicht. Wäre nett, wenn mir jemand auf die Sprünge helfen könnte. Hier der Code:



    Visual Basic-Quellcode

    1. Dim dsErgebnis As DataSet = New DataSet
    2. clSql.sqlCmd.CommandText = "SELECT RTRIM(strBuchungstagInterv) AS Intervall " & _
    3. "FROM Einstellungen " & _
    4. "WHERE intFirmaID = @Firma "
    5. clSql.sqlCmd.Parameters.Add(New SqlClient.SqlParameter("@Firma", intFirmaID))
    6. clSql.sqlDataAdapter.TableMappings.Clear()
    7. clSql.mapping = clSql.sqlDataAdapter.TableMappings.Add("Table", "Einstellungen")
    8. clSql.mapping.ColumnMappings.Add("Intervall", "Intervall")
    9. dsErgebnis = clSql.SqlDatenbank("Select", "Einstellungen")
    10. clSql.sqlCmd.Parameters.Clear()
    11. Dim lngIntervall As Long
    12. Dim strIntervall As String = dsErgebnis.Tables("Einstellungen").Rows(0)("Intervall").ToString.Trim


    Hier die verwendeten Funktionen:

    Visual Basic-Quellcode

    1. Imports System.Data.SqlClient
    2. Public Class classDatenbanken
    3. '---------------------------------------------------------------------------------
    4. 'SQL Datenbank
    5. '---------------------------------------------------------------------------------
    6. Dim clStandardFunktionen As New classStandardfunktionen
    7. Public sqldsErgebnis As New DataSet("Ergebnis")
    8. Public mapping As Common.DataTableMapping = New Common.DataTableMapping
    9. Public sqldtErgebnis As New DataTable
    10. Public sqlCmd As SqlClient.SqlCommand = New SqlClient.SqlCommand()
    11. Public sqlDataAdapter As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter
    12. Public sqlds As New DataSet
    13. Function SqlDatenbank(ByVal strAbfrageart As String, ByVal strTabellenname As String) As DataSet
    14. mapping = Nothing
    15. Dim sqlCon As SqlClient.SqlConnection = SqlVerbindung()
    16. Try
    17. System.Threading.Thread.Sleep(100)
    18. sqlCmd.Connection = sqlCon
    19. Select Case strAbfrageart
    20. Case "Select"
    21. sqlDataAdapter.SelectCommand = sqlCmd
    22. sqlDataAdapter.FillSchema(sqldsErgebnis, SchemaType.Source, strTabellenname)
    23. sqlDataAdapter.Fill(sqldsErgebnis)
    24. Case "Update"
    25. Dim sqlcbCommandBuilder As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder
    26. sqlcbCommandBuilder.DataAdapter = sqlDataAdapter
    27. sqlDataAdapter.Update(sqlds)
    28. sqlds.Clear()
    29. sqlDataAdapter.Fill(sqldsErgebnis)
    30. Case "NonQuery"
    31. sqlCmd.ExecuteNonQuery()
    32. End Select
    33. Catch ex As Exception
    34. clStandardFunktionen.Fehler(ex.Message)
    35. Finally
    36. If (sqlCon.State And ConnectionState.Open) > 0 Then sqlCon.Close()
    37. End Try
    38. Return sqldsErgebnis
    39. End Function
    40. Function SqlVerbindung() As SqlClient.SqlConnection
    41. Dim conSqlConnection As SqlClient.SqlConnection = New SqlClient.SqlConnection
    42. Dim cbSql As SqlClient.SqlConnectionStringBuilder = New SqlClient.SqlConnectionStringBuilder()
    43. Try
    44. cbSql.DataSource = My.Settings.strSqlServer
    45. cbSql.InitialCatalog = My.Settings.strSqlDatenbank
    46. cbSql.UserID = My.Settings.strSqlUser
    47. cbSql.Password = My.Settings.strSqlPasswort
    48. conSqlConnection = New SqlClient.SqlConnection(cbSql.ConnectionString)
    49. conSqlConnection.Open()
    50. Catch ex As Exception
    51. clStandardFunktionen.Fehler(ex.Message)
    52. End Try
    53. Return conSqlConnection
    54. End Function
    55. End Class


    Visual Basic-Quellcode

    1. Imports System.Net.Mail
    2. Imports System.Net
    3. Imports System.Drawing
    4. Public Class classStandardfunktionen
    5. 'Form an Panel binden
    6. Sub PanelInhaltNeu(ByVal plÄndern As Panel, ByVal frmAnzeigen As Form)
    7. plÄndern.Controls.Clear()
    8. frmAnzeigen.TopLevel = False
    9. frmAnzeigen.Visible = True
    10. plÄndern.Controls.Add(frmAnzeigen)
    11. frmAnzeigen.Enabled = True
    12. frmMain.plMain.Enabled = True
    13. End Sub
    14. 'Fehler anzeigen
    15. Sub Fehler(ByRef strText As String)
    16. MsgBox("Es ist ein Fehler aufgetreten: " & strText, MsgBoxStyle.Critical, "Fehler")
    17. End Sub
    18. End Class


    Hier noch die SQL-Tabelle der DB:


    intEinstellungenID int NotNull
    intFirmaID int NotNull
    strScanFeld nchar(250) NotNull
    strBuchungstagInterv nchar(100) NotNull
    strPassAnzeige nchar(10) NotNull
    strInfoAnzeige nchar(10) NotNull

    Werte:

    intEinstellungenID = 1
    intFirmaID = 1
    strScanFeld = Personal-Nr.
    strBuchungstagInterv = 4
    strPassAnzeige = 30
    strInfoAnzeige = 30

    Beim Debugging habe ich natürlich den intFirmaID überprüft. Ist 1, also OK.

    Danke für die Hilfe und schönen Abend!
    René
    Schreib mal Beispiele für die unterschiedlichen Output.

    Das kann an der Spracheinstellung in Connection String liegen.

    Ich z.B. muss Türkische Zeichen hinzufügen: charset=latin5


    Public Shared myConnectionString As String = "server=" & DATENBANK.DATENBANKIP & ";uid=root; pwd=root; database=xxx;Compress=false;" & _
    "Pooling=false;" & _
    "Min Pool Size=0;" & _
    "Max Pool Size=1000000;Connection Timeout=600000;" & _
    "Connection Lifetime=0;charset=latin5"
    ist denn ühaupt eine Table im Dataset vorhanden?
    Falls ja, was ist die Table.Tablename-Eigenschaft?
    Wie viele Rows hat diese Table?

    naja - ich rate jdfs. strikt davon ab, untypisierte Datasetse zu verwenden.

    guggemol "Datenbank in 10 Minuten" auf Movie-Tuts.
    Da wird im Grunde diese Vorgehensweise vor-exerziert: "Gewußt wie"

    Auf diese Weise baust du dir einen sicher funzenden DB-Zugriff auf. Die entstehenden TableAdapter kannste auch jederzeit um weitere Abfragen erweitern, auch um parametrisierte Abfragen, wie hier ja scheints beabsichtigt ist.