Autor Téma: Dátum z parametrov  (Přečteno 2611 krát)

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4438
  • Karma: 39
    • Verze Delphi: XE7 professional
Dátum z parametrov
« kdy: 29-03-2013, 09:57:23 »
Pokúšam sa o niečo také
Kód: SQL [Vybrat]
  1.     'INSERT INTO Deposits'+
  2.     '(FKSERVICE, FKSVB, FKFLAT, AMOUNT, PERIOD)'+
  3.     ' SELECT FKSERVICE, FKSVB, FKFLAT, AMOUNT,'+
  4.       ''' 1.:NewMonth.:currentYEAR'''+' as PERIOD'+
  5.  
Ako na to?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:Dátum z parametrov
« Odpověď #1 kdy: 29-03-2013, 11:38:28 »
http://www.firebirdsql.org/refdocs/langrefupd20-extract.html

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4438
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Dátum z parametrov
« Odpověď #2 kdy: 29-03-2013, 11:51:54 »
Nepochopil si čo chcem. Extract už poznám. V Delphi teraz mám
Kód: Delphi [Vybrat]
  1.  
  2.  ' SELECT FKSERVICE, FKSVB, FKFLAT, AMOUNT,'+  
  3.    ' Cast(''1.'+IntToStr(NewMonth)+ '.'+IntToStr(avalProg[6, 2])+''' as Date) as PERIOD'+
  4.  
a rád by som tam dostal parametre. Nech som skúšal čo ma napadlo, tak pri použití :NewMonth som dostával oznam "Pole NewMonth neexistuje".
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:Dátum z parametrov
« Odpověď #3 kdy: 29-03-2013, 12:12:40 »
Operátor pro spojování stringů je v SQL dvojitá roura: ||
Ovšem tyhle konverze se doporučuje dělat spíš v UDF.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2594
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Dátum z parametrov
« Odpověď #4 kdy: 29-03-2013, 12:12:58 »
Kód: Delphi [Vybrat]
  1.  
  2.  ' SELECT FKSERVICE, FKSVB, FKFLAT, AMOUNT,'+  
  3.    ' Cast(''1.'+IntToStr(NewMonth)+ '.'+IntToStr(avalProg[6, 2])+''' as Date) as PERIOD'+
  4.  
No a nemuszes to udelat nejak lidsky, napr.:
Kód: SQL [Vybrat]
  1.  
  2.  ' SELECT FKSERVICE, FKSVB, FKFLAT, AMOUNT,'+  
  3.    ' :ADATE  as PERIOD'+
  4.  

A v Delphi udelat ParamByName('ADATE').AsDateTime := EncodeDate(1,NewMonth,ThisYear);

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4438
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Dátum z parametrov
« Odpověď #5 kdy: 29-03-2013, 12:15:39 »
Hm, to ma nenapadlo použiť len jeden paramter. Prečo niečo robiť jednoducho ak to ide aj zložito.
Citace
Operátor pro spojování stringů je v SQL dvojitá roura: ||
To som skúšal. Bez úspechu.
« Poslední změna: 29-03-2013, 12:18:52 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:Dátum z parametrov
« Odpověď #6 kdy: 29-03-2013, 12:29:28 »
To som skúšal. Bez úspechu.
A zkoušel jsi to taky s datumem odpovídajícím specifikaci? Tzn. ve formátu YYYY-MM-DD? Protože to samozřejmě funguje.

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4438
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Dátum z parametrov
« Odpověď #7 kdy: 29-03-2013, 12:33:50 »
Ja som nemal problém s dátum ako takým. Ale, že mi v tomto prípade na paramter vždy dal oznam o neexistencii poľa. Jednoducho som neposkladal dokopy reťazec napr. '1.5.2012'
Použijem riešenie od pf1957. Je čisté.
 
Musel som tam doplniť
      ' Cast(:ADate as Date) as PERIOD'+

« Poslední změna: 29-03-2013, 13:06:02 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:Dátum z parametrov
« Odpověď #8 kdy: 29-03-2013, 13:56:21 »
Kód: SQL [Vybrat]
  1. SELECT CAST('2013-'||CAST(:mesic AS VARCHAR(2))||'-25' AS TIMESTAMP) FROM rdb$database
Normálně funguje.

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4438
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Dátum z parametrov
« Odpověď #9 kdy: 29-03-2013, 14:09:40 »
Pozriem sa na to. Bez toho pretypovania mi hlásilo neznámy typ.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.