Announcement

Collapse
No announcement yet.

Trigger mit Replace und Convert bei Insert/Update

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

  • Trigger mit Replace und Convert bei Insert/Update

    Hi,

    ich bin relativ neu in der ganzen Thematik und habe folgende Aufgabe.

    Ich habe Rohdaten die aus Excel per VBA in den SQL geschrieben werden.
    Aufgrund der unterschiedlichen Datenformate importiere ich erstmal alle Werte in eine "Zwischentabelle" und als VarChar.

    Problem ist das aus den Werten später Float und Int werden muss ich sie also convertieren muss. Zusätzlich muss ich im zwischenschritt die vorherigen Werte löschen, da Inter der PrimärKey ist...

    Ich habe jetzt auf der Zwischentabelle folgenden Trigger liegen:

    Code:
    ALTER TRIGGER [dbo].[ConvertTypsTrigger] 
    ON [dbo].[OnlineVariableP_TEXT]
    FOR Insert, Update AS 
    	BEGIN
    delete OnlineVariableP        
    	Insert Into OnlineVariableP ( OnlineVariableP.Inter, OnlineVariableP.Kapa, OnlineVariableP.FC, OnlineVariableP.Mehr, OnlineVariableP.Kommentar  ) 
    Select Inter, (CONVERT(FLOAT, Kapa)) as Kapa, (CONVERT(FLOAT, FC))as FC, (CONVERT(Int, Mehr))as Mehr, Kommentar
    FROM Inserted;  
    END
    wenn ich jetzt ein Insert auf das Table versuche bekomm ich die Meldung:
    Meldung 8114, Ebene 16, Status 5, Prozedur ConvertTypsTrigger, Zeile 6
    Fehler beim Konvertieren des varchar-Datentyps in float.

    Ich nehme an das das an den Kommas liegt die in Kapa bzw. FC enthalten sind.
    Richtig vermutet?

    Frage ist nun also kann ich noch ein Replace aller Komma´s einbauen?
    Ich hab keine Ahnung was ich tue aber ich will es lernen

  • #2
    Hallo,

    ja, in einem Trigger kann man (fast) alles machen, was man sonst auch kann.
    Einfacherer zu handeln und irgendwie transparenter wäre aber vlt., die Zahlen schon beim VBA - Konvertieren aufzubereiten.

    Viel Erfolg!

    Tino
    Ich habs gleich!
    ... sagte der Programmierer.

    Comment


    • #3
      Hallo,

      Ich nehme an das das an den Kommas liegt die in Kapa bzw. FC enthalten sind. Richtig vermutet?
      Richtig. Auch wenn das Komma im EN Zahlformat als Tausendertrennzeichen definiert ist und andere Konvertierungen das auch als solches akzeptieren; der MS SQL tut's nicht.
      Und REPLACE ist hier durchaus eine Möglichkeit:
      [highlight=SQL]DECLARE @ZahlDE varchar(20), @ZahlEN varchar(20);
      SET @ZahlDE = '123,456'
      SET @ZahlEN = '123.456'

      SELECT CONVERT(float, @ZahlEN) AS EN
      SELECT CONVERT(float, REPLACE(@ZahlDE, ',', '.')) AS DE[/highlight]
      Olaf Helper

      <Blog> <Xing>
      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

      Comment


      • #4
        Hallo Again und vielen Dank für eure Ansätze.
        Aufgrund einer kurzfristigen Änderung muss ich den Ablauf einwenig umschmeißen und mich erstmal um die Funktion kümmern wie ich die Werte aus dem Excelsheet in die zu generierenden Scripte (Insert / Update) bekomme......

        ich liebe es wenn sie alles umschupsen...

        hat einer noch nen Tip wo ich mich dazu belesen kann?
        Ich hab keine Ahnung was ich tue aber ich will es lernen

        Comment


        • #5
          Wie soll es ablaufen; wieder aus Excel raus?
          Was hast Du schon als Basis?
          Olaf Helper

          <Blog> <Xing>
          * cogito ergo sum * errare humanum est * quote erat demonstrandum *
          Wenn ich denke, ist das ein Fehler und das beweise ich täglich

          Comment

          Working...
          X