Страницы: 1
RSS
Выгрузка из базы. Замениит 0 на "Нет", 1 на "Да"
 
Добрый день. В Excel я не силён, по-этому не судите строго. Вопрос в следующем. Я выгружаю данные из базы в эксель. В базе булевы значения выгружаются как 0 и 1. Но мне нужно чтобы после выгрузки они автоматически заменялись на "Нет" и "Да". Манипуляции типа "Найти и заменить" не подходят, всё должно делаться автоматом. "ЕСЛИ" тоже не подходит, так как должно быть не "A2 = ЕСЛИ(А1=0;Нет;Да)", a "А1 = ЕСЛИ(А1=0;Нет;Да)". То-есть то же поле должно изменяться, значение которого мы и обрабатываем.

Есть ещё один схожий вопрос. Из этой же базы тащится дата и время в формате "dd.mm.yyyy hh:mm". Проблема в том, что сервер заморский и время там сохраняется на 3 часа меньше, чем нужно. То-есть возможно ли средстваи эксель автоматически из, например, "01.01.2017 12:00" сделать "01.01.2017 15:00"?
 
Цитата
vlad_shem написал:
Я выгружаю данные из базы в эксель
Из этой же базы тащится дата и время
Как Вы их выгружаете? Чем они 'тащаться'?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Как Вы их выгружаете? Чем они 'тащаться'?
Создаю подключение в экселе и SQL-запросом "тащатЬся".
 
Тащим клещами дальше: Текст запроса, хотя-бы, покажите
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Текст запроса

Думаю, что не могу... Не совсем открытая информация.
Вас что-то конкретное интересует?
Обычный SELECT **** FROM **** WHERE ****

 
Приведите файл-ПРИМЕР выгруженных данных
В каких столбцах нужно заменить эти 0 и 1? В каких столбцах увеличить время?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
В каких столбцах нужно заменить эти 0 и 1?
Файл по-сути представляет из себя расписание работ. И там есть cтолбец "Удалённая работа". Если первая работа удалённая, то условное С1=1, вторая не удалённая - С2 = 0.

С временем такая же ситуация. Только там столбцы "Время начала"(D1, D2, ...) и "Время окончания"(E1, E2, ...)
Изменено: vlad_shem - 11.08.2017 11:44:22
 
Т.е. в столбце C нужно заменить 0/1 на Нет/Да, а в столбцах D и E время увеличить на 3 часа?
Согласие есть продукт при полном непротивлении сторон
 
Именно так. Только с учётом, что этот же файл раз в неделю обновляется данными из базы. То-есть все мои попытки втулить какие-то формулы и т.д. заканчивались тем, что это всё слетало при очередном апдейте.
 
Цитата
vlad_shem написал:
Обычный SELECT **** FROM **** WHERE ****
SELECT в связке с REPLACE пробовали использовать?
 
Цитата
Lornt написал:
SELECT в связке с REPLACE пробовали использовать?
Вот тут я тупанул. С 0\1 на Нет\Да сработает. А вот с временем?
 
Цитата
Lornt написал:
REPLACE
а может и не сработает... как комбинировать 0 на нет, 1 на да...
 
Вот макрос. Попробовать его не на чем.
Код
Sub DragData()
arrBool = Range("C1:C" & Cells(Rows.Count, 3).End(xlUp).Row).Value
arrTime = Range("D1:E" & Cells(Rows.Count, 4).End(xlUp).Row).Value
Uarr = IIf(UBound(arrBool) >= UBound(arrTime), UBound(arrBool), UBound(arrTime))
For I = 1 To Uarr
    If arrBool(I, 1) <> Empty Then arrBool(I, 1) = IIf(arrBool(I, 1) = 0, "Нет", "Да")
    If arrTime(I, 1) <> Empty Then
        arrTime(I, 1) = arrTime(I, 1) + (1 / 8)
        arrTime(I, 2) = arrTime(I, 2) + (1 / 8)
    End If
Next
Range("C1").Resize(UBound(arrBool)) = arrBool
Range("D1").Resize(UBound(arrTime), 2) = arrTime
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Цитата
vlad_shem написал:
SQL-запросом "тащатЬся".
А что мешает в Select прописать замену 1 и 0 на Да/Нет. Для MS SQL и Oracle
Код
Case BoolFieldName When 1 Then 'Да' When 0 'Нет' End As Answer...
Аналогично и со временем?
 
SELECT m.Date, m.Name, IIF(m.BOOL=1, 'да', 'нет') FROM .... WHERE ....
 
Цитата
Андрей VG написал:
Аналогично и со временем?
Как аналогично и со временем, если у булевого 2 значения, а у времени ну никак не два...
 
Цитата
vlad_shem написал:
а у времени ну никак не два..
А кто вам мешает добавить
Цитата
vlad_shem написал:
и время там сохраняется на 3 часа меньше, чем нужно.
добавить три часа? Вам найти все варианты функции работы с датой временем для всех диалектов SQL?
 
Цитата
Case BoolFieldName When 1 Then 'Да' When 0 'Нет' End As Answer...

Есть вероятность, что я тупой, но oracle кричит "Неверное завершение SQL-предложения"...
Изменено: vlad_shem - 11.08.2017 12:21:12
 
Цитата
vlad_shem написал:
oracle кричит "Неверное завершение SQL-предложения"...
Не видя, что вы написали - нет возможности подсказать, что не правильно.
 
По-моему можно так
Код
Case "BoolFieldName"=1 Then 'Да' Else 'Нет' End As "Answer"
«Бритва Оккама» или «Принцип Калашникова»?
 
Возможно и так (нужно проверить), если "BoolFieldName" - булево
Код
Case "BoolFieldName" Then 'Да' Else 'Нет' End As "Answer"
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал:
если "BoolFieldName" - булево
Коллега, специально посмотрел, нет, увы, и в Oracle типа boolean. За поправку с Else спасибо, что-то протупил.
 
Цитата
Андрей VG написал:
За поправку с Else спасибо
Андрей, для Вас всегда пожалуйста :)
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Читают тему
Наверх