Announcement

Collapse
No announcement yet.

Schreiben einer UDF

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

  • #16
    Nö, wenn ich bei :zeitstempel '2007-12-10 12:12:12' eingebe, dann schreibt er mir "12" unbekanntes Token in Zeile 1

    Comment


    • #17
      Verwende mal das Systemdatumsformat

      Comment


      • #18
        Wo bekomm ich das her? bzw. wie sieht das aus?

        Wenn ich '12:12:12 06.12.2007' eingebe, dann bekomme ich den Fehler "conversion error from string"
        lg

        Comment


        • #19
          Das Format deines Systems also bei einem deutschen System
          '10.12.2007 12:12:12'

          Comment


          • #20
            da bekomme ich auch "12" unbekanntes Token.

            keine Ahnug was es da hat, wenn ich ' WHERE zeitstempel BETWEEN ' || :zeitstempel1 || ' AND ' || :zeitstempel2; auskommentiere, funktionierts einwandfrei,

            Comment


            • #21
              Was zeigt er als generiertes Statement an?

              Comment


              • #22
                Wo kann ich das sehen?

                Comment


                • #23
                  Hättest Du noch eine Idee, an was es liegen könnte,
                  ich hab schon alle Timestamp- Eingaben probiert (Datum als erstes, Zeit als erste),

                  keine Ahnung, was da falsch ist?
                  ich find auch im Google nichts,

                  lg

                  Comment


                  • #24
                    Hallo nochmal,

                    naja Ahnung hab ich jetzt schon, warums nicht geht, meine zeitstempel werden einfach in einen String umgewandelt und daher werden die Zeitstempel nicht mehr erkannt,

                    Gibts da noch Abhilfe oder muss ich mir etwas anderes suchen,

                    Code:
                    SQL = 'select zeitstempel, wert from ' || :Tabelle || ' WHERE zeitstempel BETWEEN ' || :zeitstempel1 || ' AND ' || :zeitstempel2;

                    lg

                    Comment


                    • #25
                      [highlight="sql"]
                      SQL = 'select zeitstempel, wert from ' || :Tabelle || ' WHERE zeitstempel BETWEEN ' || F_SQM() || :zeitstempel1 || F_SQM || ' AND ' || F_SQM() || :zeitstempel2 || F_SQM() || ';';
                      [/highlight]

                      Comment


                      • #26
                        Hallo Markus,

                        Vielen dank, jetzt funktioniert die 2. Abfrage,
                        tut mir leid, dass ich so oft fragen musste,

                        eine hätte ich noch und zwar möchte ich das gleiche bei der ersten SELECT- abfrage auch machenm da mag er aber den Semicolon nicht;

                        Code:
                        declare variable SQLCOUNT varchar(1024);
                        declare variable SQL varchar(1024);
                        declare variable i integer;
                        declare variable skipAnzahl integer;
                        declare variable tupelGesamt integer;
                                begin
                                     i = 0;
                                     SQLCOUNT = 'select count(*) from ' || :Tabelle || ' WHERE zeitstempel BETWEEN ' || F_SQM() || :zeitstempel1 || F_SQM() || ' AND ' || F_SQM() || :zeitstempel2 || F_SQM() || ';';
                                     FOR EXECUTE STATEMENT SQLCOUNT INTO :tupelGesamt; /* hier kennt der compiler den ; nicht */
                        
                                     skipAnzahl =  tupelGesamt/PixelAnzahl;
                                     SQL = 'select zeitstempel, wert from ' || :Tabelle || ' WHERE zeitstempel BETWEEN ' || F_SQM() || :zeitstempel1 || F_SQM() || ' AND ' || F_SQM() || :zeitstempel2 || F_SQM() || ';';
                                     FOR EXECUTE STATEMENT SQL INTO :zeitstempel, :wert
                                     do
                                       begin
                                            i = i + 1;
                                            IF (mod( i, skipAnzahl) = 1) then
                                               suspend;
                                       end
                                end
                        Kann man mehrere Execute- statements in einer Prozetur haben?

                        Vielen Dank nochmal,
                        lg

                        Comment


                        • #27
                          in diesem fall brauchst du das For nicht, da es nur benötigt werden wenn mehrere Ergebniszeilen erwartet werden. in diesem Fall bräuchte man dann das auch das DO

                          Comment


                          • #28
                            VIELEN DANK für die Hilfe!!!!!!!

                            Comment


                            • #29
                              Hallo,

                              Hätte noch eine Frage und zwar wenn das Ergebnis der Division skipAnzahl = :tupelGesamt/PixelAnzahl; < 0 ist, dann möchte ich alle Tupel ausgeben nur das funktioniert im unteren Code nicht,
                              Weiß da jemand noch einen Rat?

                              Vielen Dank!!!

                              lg

                              Code:
                              declare variable SQLCOUNT varchar(1024);
                              declare variable SQL varchar(1024);
                              declare variable i integer;
                              declare variable skipAnzahl integer;
                              declare variable tupelGesamt integer;
                                      begin
                                           i = 0;
                                           SQLCOUNT = 'select count(*) from ' || :Tabelle || ' WHERE zeitstempel BETWEEN ' || F_SQM() || :zeitstempel1 || F_SQM() || ' AND ' || F_SQM() || :zeitstempel2 || F_SQM() || ';';
                                           EXECUTE STATEMENT SQLCOUNT INTO tupelGesamt;
                                           skipAnzahl = :tupelGesamt/PixelAnzahl;
                              
                                           IF (skipAnzahl > 0) then begin
                                              SQL = 'select zeitstempel, wert from ' || :Tabelle || ' WHERE zeitstempel BETWEEN ' || F_SQM() || :zeitstempel1 || F_SQM() || ' AND ' || F_SQM() || :zeitstempel2 || F_SQM() || ';';
                                              FOR EXECUTE STATEMENT SQL INTO :zeitstempel, :wert
                                              do
                                                begin
                                                  i = :i + 1;
                                                  IF (mod(:i, :skipAnzahl) = 1) then
                                                     suspend;
                                                end
                                           end
                                           ELSE begin
                                                SQL = 'select zeitstempel, wert from ' || :Tabelle || ' WHERE zeitstempel BETWEEN ' || F_SQM() || :zeitstempel1 || F_SQM() || ' AND ' || F_SQM() || :zeitstempel2 || F_SQM() || ';';
                                                FOR EXECUTE STATEMENT SQL INTO :zeitstempel, :wert
                                                    do
                                                      begin
                                                      end
                                           end
                              
                                      end

                              Comment


                              • #30
                                Habs schon, vielen Dank!!

                                lg und schöne Weihnachten,

                                Comment

                                Working...
                                X