powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вытащить время через Fox из ASE?
13 сообщений из 13, страница 1 из 1
Как вытащить время через Fox из ASE?
    #36009675
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Помогите пожалуйста решить такую задачку.
Есть сервер ASE, подключаюсь к нему из Фокса через ОДБС.
На сервере есть таблица с полем Datetime.
Мне в фокс необходимо вытащить из этого поля только время (а точнее часы и минуты) для корректировки.
Подскажите, как это правильно сделать.
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36009733
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Есть сервер ASE

это кто?
это имя сервера? или ?
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36009758
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t-sql
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if object_id('tempdb..#tt') is not null drop table #tt
create table #tt (ddd datetime)
insert into #tt values (getdate()+ 10 )

select  h=datepart(hour,ddd)
	  , m=datepart(minute,ddd)
	  , s=datepart(second,ddd)
	from #tt
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36009760
прошелмимо
Код: plaintext
Есть сервер ASE

это кто?
это имя сервера? или ?Это Sybase ASE, один из потомков Sybase SQL Server 4.2, прародителя MS SQL Server.
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36009773
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Это Sybase ASE

вопрос из серии ребусов...

автору топику,
преобразуйте дату на стороне сервера
(верните из датытайма время, выполнив преобразование на стороне сервера)
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36009798
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
_nCH=SQLConnect(ИмяПользователя,Пароль,имяИсточникаODBC)
IF m._nCH<= 0 
	MESSAGEBOX('Не удалось установить соедиение.')
	RETURN 
ENDIF 
TEXT TO l_sql NOSHOW PRETEXT  15 
SELECT poleDatetime
FROM myTable 
ENDTEXT 
******	
IF SQLEXEC(_nCH,l_sql, 'cTmp')<= 0  
	AERROR(a_er)
	MESSAGEBOX('Ошибка №'+CAST(a_er( 1 ) as varchar( 6 ))+CHR( 13 )+a_er( 2 ),  16 )
	RETURN 
ENDIF 
Теперь имеешь курсор cTmp, которое можешь крутить как хочешь. И время от туда, и число, и минуты и секунды и пр.
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36010019
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо,
пасиб, этот вариант знаю, но я хочу получить итоговое значение в одном поле и в формате "hh:mm", тут же, если часы, минуты или секунды меньше 10, то получается "0:0:0".
например: "10:5:42" - а это не красиво :(

GoshaS,
тоже пасиб, подключаться к серверу и вытягивать поле я умею, и такой результат я получаю в любом случае. Я ищу максимально короткий и правильный путь к преобразованию Datetime в "hh:mm", и в гриде данное поле было бы с маской "99:99" (только ввод цифр).

может неправильно изъясняюсь... но где-то так.
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36010094
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для корректировки где? На сервере?
Тогда курсор адаптер. В любом случае надо вытягивать и ключевое поле.
Ведь запрос можно и изменить.
что мешает написать скажем так:
Код: plaintext
1.
2.
3.
4.
5.
TEXT TO l_sql NOSHOW PRETEXT  15 
select ("poleDateTime" as time), 
minute("poleDateTime"),second("poleDateTime") 
from table
ENDTEXT 
Ты скажи ты скажи
чё те надо, чё надо
может напишем тебе
чё ты хошь
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36010107
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока сделал так:
Код: plaintext
1.
2.
Select convrt(varchar( 20 ), my_field ,  108 ) as my_time
from my_tab

в гриде, в column inputmask = 99:99 и в textbox (этогo column) inputmask = 99:99

таким образом пока что все хорошо...
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36010115
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не знаю Вашего диалекта

относительно t-sql извратам нет предела

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if object_id('tempdb..#tt') is not null drop table #tt
create table #tt (ddd datetime)
insert into #tt values (getdate()+ 10 )

select  ddd, h=datepart(hour,ddd)
	  , m=datepart(minute,ddd)
	  , s=datepart(second,ddd)
      , fff = left('0'+ltrim(str(datepart(hour,ddd))), 2 ) 
              + ':'
              + left('0'+ltrim(str(datepart(minute,ddd))), 2 )
	  , kkk = convert(char( 5 ),ddd, 108 )
	from #tt

другое дело, что назад апдейты рисовать нужно будет
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36010151
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итересно, а при чем тут тогда фокс?
Есть отдельная ветка обсуждения ASA & ASE.
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36011802
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoshaSИтересно, а при чем тут тогда фокс?
Есть отдельная ветка обсуждения ASA & ASE.
Фокс при том, что например при работе с power builder'oм, который изначально заточен под ASE, крутить данные намного удобнее и проще, но сейчас необходимо работать с ASE именно из под фокса и делать правильно необходимые преобразования данных. Ведь я не спрашивал "как подключиться к ASE". Возможно я некорректно изначально задал вопрос, без уточнений и пояснений, за что извиняюсь.
...
Рейтинг: 0 / 0
Как вытащить время через Fox из ASE?
    #36011845
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousМне в фокс необходимо вытащить из этого поля только время (а точнее часы и минуты) для корректировки.
Предположим, вы решили первую часть задачи - вытащили часы и минуты. Скорректировали. А как вы собираетесь запихивать их обратно? Т.е. сохранять изменения в Sybase?

Кстати, попутный вопрос, модификация часов/минут не может сопровождаться переходом на другой день. На вчера или завтра? Может, имеет смысл вытаскивать DateTime "как есть"? Без выделения частей?

В FoxPro нет полей типа "Время", поэтому придется выполнять много ручной работы, особенно если надо сбрасывать модификации обратно в исходную базу.

Простейший вариант решения - вытягивать в FoxPro поле DateTime "как есть", но формировать еще одно вычисляемое поле символьного типа. Строку для хранения в будущем фрагмента со временем.

После формирования курсора, на стороне FoxPro пробежаться по всем записям и сформировать значение этого пустого поля при помощи примерно такого преобразования

Код: plaintext
1.
2.
set seconds off
replace all ExpField with RIGHT(TTOC(FieldDateTime), 5 )

Соответственно, пользователь видит и редактирует это вычисленное поле (надо будет еще контроль вводимых значений навесить). Поле DateTime скрытое. Перед сбросом изменений на основе значений этого "пользовательского" поля модифицировать исходное поле DateTime.

ImperousПока сделал так:

Код: plaintext
1.
Select convrt(varchar( 20 ), my_field ,  108 ) as my_time
from my_tab
в гриде, в column inputmask = 99:99 и в textbox (этогo column) inputmask = 99:99
А почему не завершили преобразование, отбросив лишние части полученной строки? И, кстати, как это будет работать для сброса изменений обратно в Sybase?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вытащить время через Fox из ASE?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]