05:07
JohnDoe_71Rus has joined #libreoffice-ru
08:55
UNIm95 has joined #libreoffice-ru
11:02
JohnDoe_71Rus has quit [Ping timeout: 268 seconds]
11:02
<
lo-ru-tg >
<woodyfire> Всем доброго дня. Подскажите (помогите) разобраться как привильно готовить дату.
11:02
<
lo-ru-tg >
<woodyfire> Как отправляю на сервер
11:02
<
lo-ru-tg >
<woodyfire> sSQL = "CALL api_cpps_old.proc_add_data_test((?))"
11:02
<
lo-ru-tg >
<woodyfire> Проблема следущего рода. Мне необходимо отправить на сервер дату с типом 'timestamp'
11:02
<
lo-ru-tg >
<woodyfire> oPrep = oConn.PrepareStatement(sSQL)
11:02
<
lo-ru-tg >
<woodyfire> IF g_dfData.DepData.dtDetection <> "00:00:00" Then
11:02
<
lo-ru-tg >
<woodyfire> oPrep.setString(30,g_dfData.DepData.dtDetection)
11:02
<
lo-ru-tg >
<woodyfire> Else
11:02
<
lo-ru-tg >
<woodyfire> oPrep.setNull(30,g_dfData.DepData.dtDetection)
11:02
<
lo-ru-tg >
<woodyfire> End If
11:02
<
lo-ru-tg >
<woodyfire> в общем подготавливается как строка , а надо как timestamp. Как сделать? setDate, setTimestamp что то не работает. говорит, что объект не создан.
11:02
<
lo-ru-tg >
<woodyfire> [EDIT] Всем доброго дня. Подскажите (помогите) разобраться как правильно готовить дату.
11:02
<
lo-ru-tg >
<woodyfire> Проблема следущего рода. Мне необходимо отправить на сервер дату с типом 'timestamp'
11:02
<
lo-ru-tg >
<woodyfire> Как отправляю на сервер
11:02
<
lo-ru-tg >
<woodyfire> sSQL = "CALL api_cpps_old.proc_add_data_test((?))"
11:02
<
lo-ru-tg >
<woodyfire> oPrep = oConn.PrepareStatement(sSQL)
11:02
<
lo-ru-tg >
<woodyfire> IF g_dfData.DepData.dtDetection <> "00:00:00" Then
11:03
<
lo-ru-tg >
<woodyfire> oPrep.setString(30,g_dfData.DepData.dtDetection)
11:03
<
lo-ru-tg >
<woodyfire> Else
11:03
<
lo-ru-tg >
<woodyfire> oPrep.setNull(30,g_dfData.DepData.dtDetection)
11:03
<
lo-ru-tg >
<woodyfire> End If
11:03
<
lo-ru-tg >
<woodyfire> в общем подготавливается как строка , а надо как timestamp. Как сделать? setDate, setTimestamp что то не работает. говорит, что объект не создан.
11:07
<
lo-ru-tg >
<Mike> "setDate, setTimestamp что то не работает" - это очень подробно! 😉
11:07
JohnDoe_71Rus has joined #libreoffice-ru
11:08
<
lo-ru-tg >
<Mike> просто сообщение "объект не создан" - и всё?
11:08
<
lo-ru-tg >
<Mike> и почему 30,
11:10
UNIm95 has quit [Ping timeout: 268 seconds]
11:15
<
lo-ru-tg >
<Mike> XParameters::setDate принимает com::sun::star::util::Date. И ещё подозрительны вторые кавычки вокруг параметра (который первый в запросе - так что всё же: почему 30?) - но тут я не знаю, как SQL к этому отнесётся
11:16
UNIm95 has joined #libreoffice-ru
11:18
<
lo-ru-tg >
<woodyfire> потому-что сам запрос вот:
11:18
<
lo-ru-tg >
<woodyfire> sSQL = "CALL api_cpps_old.proc_add_data_test((NULL,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:18
<
lo-ru-tg >
<woodyfire> & "?,?,?,?,?,?,?,?,?,?," _
11:19
<
lo-ru-tg >
<Mike> а, ок - непричёсанный пример 😊
11:22
<
lo-ru-tg >
<woodyfire> Сейчас попытаюсь все подробно объяснить. Сейчас паралельно общался к ребятами в группе по PostgreSQL. Вот что там интересненькое выяснилось.
11:22
<
lo-ru-tg >
<woodyfire> Вы уверены, что там нет нормального варианта?"
11:22
<
lo-ru-tg >
<woodyfire> "Т.е. этот клиент посылает непараметризованные запросы — тупо "клеит" строки.
11:22
<
lo-ru-tg >
<woodyfire> Это там был задан такой вопрос на который я пока ответа не знаю
11:23
<
lo-ru-tg >
<woodyfire> сейчас перепишу и выдам, что происходит
11:25
<
lo-ru-tg >
<woodyfire> Это все что мне пока извесно
11:25
<
lo-ru-tg >
<woodyfire> использовал setTimestamp
11:25
<
lo-ru-tg >
<woodyfire> вместо setString
11:25
<
lo-ru-tg >
<Mike> и как он использовался?
11:26
<
lo-ru-tg >
<woodyfire> oPrep.setTimestamp(30,g_dfData.DepData.dtDetection)
11:26
<
lo-ru-tg >
<Mike> ... и g_dfData.DepData.dtDetection - строка?
11:28
<
lo-ru-tg >
<woodyfire> Date
11:31
<
lo-ru-tg >
<woodyfire> неужели ручками под эту структуру готовить надо
11:31
<
lo-ru-tg >
<woodyfire> unsigned short Minutes;
11:31
<
lo-ru-tg >
<woodyfire> published struct DateTime
11:31
<
lo-ru-tg >
<woodyfire> unsigned long NanoSeconds;
11:31
<
lo-ru-tg >
<woodyfire> {
11:31
<
lo-ru-tg >
<woodyfire> unsigned short Seconds;
11:31
<
lo-ru-tg >
<woodyfire> unsigned short Hours;
11:31
<
lo-ru-tg >
<woodyfire> unsigned short Day;
11:31
<
lo-ru-tg >
<woodyfire> unsigned short Month;
11:31
<
lo-ru-tg >
<woodyfire> short Year;
11:31
<
lo-ru-tg >
<woodyfire> boolean IsUTC;
11:31
<
lo-ru-tg >
<woodyfire> };
11:32
<
lo-ru-tg >
<Mike> dim d as Date
11:32
<
lo-ru-tg >
<Mike> dim dd as new com.sun.star.util.Date
11:32
<
lo-ru-tg >
<Mike> .Year = Year(d)
11:32
<
lo-ru-tg >
<Mike> d = "2020-01-28"
11:32
<
lo-ru-tg >
<Mike> .Day = Day(d)
11:32
<
lo-ru-tg >
<Mike> with dd
11:32
<
lo-ru-tg >
<Mike> .Month = Month(d)
11:32
<
lo-ru-tg >
<Mike> end with
11:32
<
lo-ru-tg >
<Mike> Это для Date - для DateTime похоже
11:33
<
lo-ru-tg >
<Mike> У этих структур нет конструкторов ис строк
11:52
<
lo-ru-tg >
<woodyfire> Спасибо огромное, заработало )
11:52
<
lo-ru-tg >
<woodyfire> dd = new "com.sun.star.util.DateTime"
11:52
<
lo-ru-tg >
<woodyfire> IF g_dfData.DepData.dtDetection <> "00:00:00" Then
11:52
<
lo-ru-tg >
<woodyfire> .Year = Year(g_dfData.DepData.dtDetection)
11:52
<
lo-ru-tg >
<woodyfire> with dd
11:52
<
lo-ru-tg >
<woodyfire> .Month = Month (g_dfData.DepData.dtDetection)
11:52
<
lo-ru-tg >
<woodyfire> .Day = Day(g_dfData.DepData.dtDetection)
11:52
<
lo-ru-tg >
<woodyfire> .Hours = Hour(g_dfData.DepData.dtDetection)
11:52
<
lo-ru-tg >
<woodyfire> .Minutes = Minute(g_dfData.DepData.dtDetection)
11:52
<
lo-ru-tg >
<woodyfire> .Seconds = Second(g_dfData.DepData.dtDetection)
11:52
<
lo-ru-tg >
<woodyfire> .NanoSeconds = 0
11:52
<
lo-ru-tg >
<woodyfire> .IsUTC = false
11:52
<
lo-ru-tg >
<woodyfire> end with
11:52
<
lo-ru-tg >
<woodyfire>
11:56
<
lo-ru-tg >
<Mike> а зачем dd в setNull?
12:00
<
lo-ru-tg >
<Mike> чтобы не делать кучу идентичных преобразований из строки в дату, лучше сделать хелпер типа
12:00
<
lo-ru-tg >
<Mike> Function cssDateTime(d As Date) As com.sun.star.util.DateTime
12:00
<
lo-ru-tg >
<Mike> .Year = Year(d)
12:00
<
lo-ru-tg >
<Mike> .Month = Month(d)
12:00
<
lo-ru-tg >
<Mike> cssDateTime = New com.sun.star.util.DateTime
12:00
<
lo-ru-tg >
<Mike> With cssDateTime
12:00
<
lo-ru-tg >
<Mike> .Day = Day(d)
12:00
<
lo-ru-tg >
<Mike> .Hours = Hour(d)
12:00
<
lo-ru-tg >
<Mike> .Minutes = Minute(d)
12:00
<
lo-ru-tg >
<Mike> .Seconds = Second(d)
12:00
<
lo-ru-tg >
<Mike> .NanoSeconds = 0
12:00
<
lo-ru-tg >
<Mike> .IsUTC = false
12:00
<
lo-ru-tg >
<Mike> и вызывать его как oPrep.setTimestamp(30,cssDateTime(g_dfData.DepData.dtDetection))
12:04
<
lo-ru-tg >
<woodyfire> не. я сделаю проще как мне кажеться. я в своей структуре изначально сделаю не date, а datetime и при присваивании значения буду сразу готовить как полагается. Тогда при отправке не надо будет такое писать
12:10
<
lo-ru-tg >
<Mike> Это уж как угодно. На мой взгляд, может быть проще писать и читать
12:10
<
lo-ru-tg >
<Mike> If strDate = "" Then
12:10
<
lo-ru-tg >
<Mike> oPrep.setNull(30)
12:10
<
lo-ru-tg >
<Mike> Else
12:10
<
lo-ru-tg >
<Mike> oPrep.setTimestamp(30,CDateToUnoDateTime(strDate))
12:10
<
lo-ru-tg >
<Mike> End If
12:10
<
lo-ru-tg >
<Mike> чем проверять дату на какое-то спецзначение, означающее "не установлена"
12:11
<
lo-ru-tg >
<Mike> но если строка даты-времени может быть неоднозначной - будет ой
12:13
<
lo-ru-tg >
<woodyfire> вот так прописал. работает на ура.
12:13
<
lo-ru-tg >
<woodyfire> >чем проверять дату на какое-то спецзначение, означающее "не установлена"
12:13
<
lo-ru-tg >
<woodyfire> вот тут наверное да вы правы. Но надо посмотреть
12:23
<
lo-ru-tg >
<woodyfire> Да действительно
12:23
<
lo-ru-tg >
<woodyfire> sub test()
12:23
<
lo-ru-tg >
<woodyfire> ss = CDateToUnoDateTime(Date()+5)
12:23
<
lo-ru-tg >
<woodyfire> s = CDateToUnoDateTime(Date())
12:23
<
lo-ru-tg >
<woodyfire>
12:23
<
lo-ru-tg >
<woodyfire>
12:23
<
lo-ru-tg >
<woodyfire> sd = s - ss
12:23
<
lo-ru-tg >
<woodyfire> MsgBox sd , 0, "FormatDateTime"
12:23
<
lo-ru-tg >
<woodyfire> end sub
12:23
<
lo-ru-tg >
<woodyfire> так не работает
12:23
<
lo-ru-tg >
<woodyfire> sub test()
12:23
<
lo-ru-tg >
<woodyfire> s = Date()
12:23
<
lo-ru-tg >
<woodyfire> ss = Date()+5
12:23
<
lo-ru-tg >
<woodyfire>
12:24
<
lo-ru-tg >
<woodyfire> остановлюсь на Вашем предложенном варианте
12:24
<
lo-ru-tg >
<woodyfire> Спасибо огромное еще раз.
12:24
<
lo-ru-tg >
<Mike> о/
13:33
UNIm95 has quit [Read error: Connection reset by peer]
13:33
UNIm95 has joined #libreoffice-ru
15:23
JohnDoe_71Rus has joined #libreoffice-ru
15:26
mikekaganski_ has joined #libreoffice-ru
15:26
mikekaganski has quit [Disconnected by services]
16:03
mikekaganski_ is now known as mikekaganski
16:45
UNIm95 has quit [Quit: Leaving.]
17:09
UNIm95 has joined #libreoffice-ru