Announcement

Collapse
No announcement yet.

Fehlerauswertung

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

  • Fehlerauswertung

    Hallo,

    habe follgendes Problem: Ich lege eine z.b. Tabelle in einer Datenbank bzw. Spalte in einer Tabelle an. Wenn diese in der DB noch nicht vorhanden ist wird diese anstandslos Angelegt. Führe ich diese Funktion nochmals aus wird eine Fehlermeldung erzeugt. Soweit so gut. In VB6 konnte man die Fehlernummer Auswerten, so dass in diesem Fall die Fehlermeldung elegant ignoriert werden konnte, da sie nur vorkommt wenn die Tabelle bzw. Spalte bereits vorhanden sind..
    Meine Frage: wie wird das in VB.Net gemacht? Ich erhalte nur eine elendlange Fehlermeldung mit der ich nichts anfangen kann und schon gar nicht auswerten kann. Hat schon jemand von euch das Problemm gelöst.

    Gruß
    Meissner

  • #2
    Mit einer try...except-Anweisung wie bei jeder vernünftigen Programmiersprache.
    Die OnError-Konstrukte bei VB sind alles andere als vernünftige Programmierkonstrukte.

    Comment


    • #3
      Hallo,

      das ist schon klar, dass ich ein Fehler mit try..catch abfange.
      Nun leider weis ich immer noch nicht wie ich einen ganz betimmten Fehler, wenn er auftritt, bestimmen kann. Die Fehlernummern scheinen in VB.Net nicht mehr zu geben. Oder irre ich mich da?
      Habe leider noch keine Zeit gehabt danach zu recherchieren. Aber vielleicht hat sich jemand von euch schon damit befasst?

      Gruß
      Meissner

      Comment


      • #4
        Fehlernummer gibt es nicht mehr, aber dafür Fehlerklassen. Und diese kannst Du entsprechend im exept-Teil angeben.
        Da ich in VB.NET-Syntax nicht fit bin geb ich dir mal die Delphi-Syntax an:

        try
        ...
        except
        on e: EMeineAbzufangendeExeptionsklasse do
        begin
        if E.Fehlercode = ... then
        ...
        end;
        end;
        Und jede Exeptionklasse besitzt weitere Infos zu der Exeption als Membervariablen

        Comment


        • #5
          Hallo,

          Nun leider weis ich immer noch nicht wie ich einen ganz betimmten Fehler, wenn er auftritt, bestimmen kann
          wenn auf eine MS SQL Server-Datenbank zugegriffen wird, ist SqlException die richtige Stelle. Über die Eigenschaften Number und State können die Fehlernummern des MS SQL Servers ausgelesen werden.

          Code:
          Imports System.Data.SqlClient
              ...
              Dim sCS As String = "data source=localhost;initial catalog=..."
          
              Private Sub Button1_Click(ByVal sender As System.Object, _ 
                     ByVal e As System.EventArgs) Handles Button1.Click
                  Dim aCon As New SqlConnection(sCS)
                  Dim aExc As SqlException
                  Try
                      aCon.Open()
                      aCon.Close()
                  Catch aExc
                      Dim iErrorNum As Integer
                      Dim aSB As New System.Text.StringBuilder()
                      For iErrorNum = 0 To aExc.Errors.Count - 1
                          aSB.AppendFormat("Fehler-Index: {0}{1}", _
                             iErrorNum.ToString(), Environment.NewLine)
                          aSB.AppendFormat("Originale Fehlernummer: {0} (State: {1}){2}", _
                             aExc.Errors(iErrorNum).Number.ToString(), _
                             aExc.Errors(iErrorNum).State.ToString(), Environment.NewLine)
                          aSB.AppendFormat("Fehlertext: {0}{1}", _
                             aExc.Errors(iErrorNum).Message, Environment.NewLine)
                      Next iErrorNum
                      MessageBox.Show(aSB.ToString())
                  End Try
              End Sub

          Comment


          • #6
            Wäre es nicht besser im DataDictonary / MetaDataViews nachzusehen ob die Tabelle / Spalte in Tabelle bereits vorhanden ist!!?

            Comment

            Working...
            X