Страницы: 1
RSS
VBA SQL: Дата и число в текст, Преобразовать в запросе к dbf дату или число в текст
 
Макросом получаются данные из файлов dbf. Нужно в запросе преобразовать дату и число в текст.
То, что советуется в интернетах - использовать операторы format (а также convert, cast и др.) - не помогает. Выскакивает ошибка [Microsoft][ODBC Visual FoxPro Driver]File 'format.prg' does not exist.
Драйвер подключения поменять не получается, т.к. прочие драйвера выдают ошибку Внешняя таблица не имеет предполагаемый формат.
Пока выкручиваюсь тем, что данные запроса загоняются в массив и там уже преобразуются. Но это усложняет код VBA и не всегда получается сделать быстро.
Как в самом запросе преобразовать дату или число в текст?
Код
Set cnn = New ADODB.Connection
strCnnString = "Driver={Microsoft Visual FoxPro Driver};DriverID=277;UID=;PWD=;" & _
    "SourceDB=D:\Mybase;SourceType=DBF;Exclusive=No;" & _
    "BackgroundFetch=Yes;Collate=Machine;Null=no;Deleted=Yes;"
cnn.Open strCnnString
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
sqlString = "SELECT date, doc, cena FROM mydbf" ' здесь надо бы сразу получить date и cena как строку (текст)
Set rst = cnn.Execute(sqlString)
 
попробуйте CStr(date)
 
Доброе время суток.
Цитата
tolikt написал:
То, что советуется в интернетах - использовать операторы format (а также convert, cast и др.)
И для каких диалектов SQL это советуют, не уж то для Foxpro? Может в справочнике по самому Foxpro смотреть?
Успехов.
 
Нет, ну наверное, тогда надо в SQL-запросе использовать именно type2string-функции VFP?
Код
sqlString = "SELECT transform(date,"@YS") as date, doc, str(cena) as cena FROM mydbf"
Ну или что-то вроде:
Код
sqlString = "SELECT right(dtos(date),2)+'.'+substr(dtos(date),5,2)+'.'+left(dtos(date),4) as date, doc, str(cena,2) as cena FROM mydbf"
 
CStr(date) - это для самого VBA, а не для запроса.
transform(date,'@YS') - выскакивает ошибка Function is not implemented. С кавычками - вообще синтаксическая ошибка.
dtos(date) - как раз то, что и надо было!

Спасибо всем!
Страницы: 1
Наверх