Страницы: 1
RSS
Excel - Хранимка - SQL <> формат дата, тип дата
 
Добрый день уважаемые . Столкнулся с проблемой.
Имеются данные в SQL Server.
Чтобы получить данные я подключаюсь к БД через хранимку.
Хранимка получает данные и загружает в excel.
В связи с тем что в БД данные поступают json-ом то они автоматом загружаются в текстовом формате и дату я загружаю вот в таком формате 2021.01.04
При получении через хранимку я конвертирую ее чтобы excel понял что это дата.
SELECT TOP 1000 [ID]
     ,substring([дата],9,2)+'.'+ substring([дата],6,2)+'.'+ substring([дата],1,4),
from таблица
После загрузки в excel она отображается 02.03.2021
Вроде бы все хорошо НО имеется проблема. пока не обновишь ячейку формат не меняется и остается виде текст.
Исправляю в ручную, меню Данные - Текст по столбцам - Далее Готово. Формат исправляется.
Но нам желательно чтобы она произошла автоматом и хотел записать в макрос но после запуска макроса нечего не происходит.
Проблема в том что данные загружаются в excel, в день около до 2-3тыс строк.
Не подскажите пжлст как исправить ситуацию ?
Заранее очень благодарю.
 
powerwer, Вы берете текст и изменяя его получаете текст, а надо преобразовать его в дату. тогда она и придет как дата в excel.
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
powerwer, Вы берете текст и изменяя его получаете текст, а надо преобразовать его в дату. тогда она и придет как дата в excel.
Не подскажите как переобразовать и получить ее как дата ?  
 
Я много лет с этим не связан, но что у ваз за SQL server?
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
Я много лет с этим не связан, но что у ваз за SQL server?
SQL Server 2008 r2
 
Цитата
powerwer написал:
хотел записать в макрос но после запуска макроса нечего не происходит
текст макроса в этом случае имеет значение :)
Код
Sub TransformType()
    Range("A1:A10").FormulaLocal = Range("A1:A10").FormulaLocal
End Sub

еще можно через тот же SQL попробовать(даже перестановки не должны потребоваться):
Код
Cast([дата] as datetime)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Cast([дата] as datetime)
https://learn.microsoft.com/ru-Ru/sql/t-sql/functions/cast-and-convert-transact-sql?view=azuresqldb-mi-current
По вопросам из тем форума, личку не читаю.
 
БМВ, что не так? Вроде должна конвертнуть на стороне сервера.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
123Sub TransformType()    Range("A1:A10").FormulaLocal = Range("A1:A10").FormulaLocalEnd Sub
Спасибо большое за обратную связь.
Получилось.
Огромное спасибо - Респект !!! 8)  
 
Цитата
написал:
БМВ, что не так? Вроде должна конвертнуть на стороне сервера.
Не получилось или может я не смог но формула в Макросе то что написали она помогла.
Супер.
Спасибо еще раз.
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
БМВ , что не так? Вроде должна конвертнуть на стороне сервера.
Дима, все ок, просто дал ссылку на документацию.
По вопросам из тем форума, личку не читаю.
 
Ребята, не поможете кодом, пжслт.
После загрузки я обновляю формат столбца
Код
Лист4.Range("B2:B1048576").FormulaLocal = Range("B2:B1048576").FormulaLocal
Каждый день загружается N - кол-во строк и было бы правильно менять формат только новые загруженные строки а не начало до конца столба.
Не подскажите пжлст возможно ли Formulalocal только к последним загруженным данным и если да то как .
Спасибо.  
 
Код
With Worksheets("Лист4")
    LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
    .Range("B2:B" & LastRow).FormulaLocal = .Range("B2:B" & LastRow).FormulaLocal
End With
Изменено: New - 04.11.2022 16:05:42
 
New, ругается на LastRow
Код
With Worksheets("Лист4")    
LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
    .Range("B2:B" & LastRow).FormulaLocal = .Range("B2:B" & LastRow).FormulaLocal
End With
 
Цитата
powerwer написал:
ругается на LastRow
Это вы жалуетесь, или хвастаетесь?
 
RAN, ни как нет.
Просто код выдает ошибку.
У меня нет такого уровня чтобы найти ошибку или хвастаться. Спасибо активным участникам которые помогают. Я просто попросил помочь в решении но после получении нового кода выдала ошибку.
По этому хотел данным своим сообщением донести что выдала ошибку.  
 
Вот данная ошибка  
 
powerwer, вы не правильно формулируете вопрос
Ваш вопрос должен звучать так
"Почему в моем г**о коде сей фрагмент не работает? Сайт гадалок посещал, ответа не получил."

PS так вы даже не читаете, что вам Excel пишет?
Изменено: RAN - 04.11.2022 18:04:04
 
RAN, Вы прям читаете мои мысли )
Так в чем же моя вина ?
Не подскажите пжлст ?  
 
Мне за вас ввести текст сообщения в любой поисковик? А заодно и в переводчик?
 
RAN, Ругается на переменную.
Не находит ее.  
 
Я знаю. Хотя понятия не имею, что такое "Хранимка".
powerwer, это никак не относится к заявленной теме. Это элементарное незнание основ VBA.
Что такое переменная и как правильно её объявить?
Изменено: RAN - 04.11.2022 18:33:36
 
Цитата
Не находит ее.  
Так объявите
Или Уберите Option Explicit что не рекомендую
Изменено: Александр Моторин - 04.11.2022 18:43:05
 
Цитата
powerwer написал:
Не подскажите пжлст ?  
Подскажу.Посмотрите на первую строку кода в модуле, в котором находится эта процедура.
 
RAN,
Код
Dim LastRow As String
Спасибо ))  
Изменено: powerwer - 04.11.2022 18:47:31
 
Цитата
powerwer написал:
RAN,     Dim   LastRow   As   String    Спасибо ))  
И тут умудрились извратить!  8-0
Dim   LastRow   As   Long,  или Dim   LastRow   As   Integer
Изменено: RAN - 04.11.2022 19:18:26
 
RAN, главное что заработало :-)
 
Дмитрий(The_Prist) Щербаков, Не могли бы помочь пжслт
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=153425&a...
Страницы: 1
Наверх