powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / непонятка с SQL запросом в ODBCDirect
9 сообщений из 9, страница 1 из 1
непонятка с SQL запросом в ODBCDirect
    #33431104
MAzamat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так я соединяюсь к таблице DBF необходимо на основе данных с этой таблицы создать новую таблицу:
Set ws = DBEngine.CreateWorkspace("", "Admin", "", dbUseODBC)
Set con = ws.OpenConnection("ConName", dbRunAsync, False, _
"ODBC;DSN=Visual FoxPro Tables;UID=;PWD=;SourceDB=c:\NSI;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;")

Соединяется нормально дальшо пишу запрос на создание таблицы:

con.Execute "CREATE TABLE c:\NSI\tblmy" & _
"([Vagon] text, [First] datetime, [Second] datetime)"
Создает отлично таблицу без проблем затем пытаюсь заполнить таблицу пишу запрос:

con.Execute "INSERT INTO tblmy IN 'C:\NSI' 'ODBC;DSN=Visual FoxPro Tables;UID=;PWD=;SourceDB=c:\NSI;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;'" & _
" SELECT VAGON, Format(DateSerial(Mid([DATEN],3,2), Mid([DATEN],5,2), Right([DATEN],2)), 'dd/mm/yy') AS [First]," & _
" Format(DateSerial(Mid([DATEK],3,2), Mid([DATEK],5,2), Right([DATEK],2)),'dd/mm/yy') AS [Second]" & _
" FROM Arenda"

пишет ошибку 3146 ODBC-ошибка вызова. Че не так?
Еще пробовал написать тут же запрос:

con.Execute "SELECT *" & _
" INTO d:\CrSprav\Input\tblAr" & _
" FROM Arenda" & _
" WHERE (('" & DData & "') Between DATEN And DATEK)"

пишет ошибку 3146 ODBC-ошибка вызова.
Хотя просто запрос на выборку
con.Execute "SELECT *" & _
" FROM Arenda" & _
" WHERE (('" & DData & "') Between DATEN And DATEK)"
работает нормально.

Т.е. Не хотят работать запросы INSERT ... INTO... и SELECT ... INTO ...
Подскажите что я упустил в запросах.
...
Рейтинг: 0 / 0
непонятка с SQL запросом в ODBCDirect
    #33431198
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формат даты должен быть американским mm/dd/yyyy.
...
Рейтинг: 0 / 0
непонятка с SQL запросом в ODBCDirect
    #33431291
MAzamat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreyMpФормат даты должен быть американским mm/dd/yyyy.

Пробовал не помогает таже ошибка выходит.
...
Рейтинг: 0 / 0
непонятка с SQL запросом в ODBCDirect
    #33431362
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, забыл сказать что дата должна ограничиваться диезами, т.е. #11/30/2005#
...
Рейтинг: 0 / 0
непонятка с SQL запросом в ODBCDirect
    #33431471
MAzamat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreyMpДа, забыл сказать что дата должна ограничиваться диезами, т.е. #11/30/2005#

это тоже предусмотрел у меня переменная в запросе получается так
Dim DData As String
DData = "#" DData = "#" Mid(CStr(Date - 1), 4, 2) & "/" & Left(CStr(Date - 1), 2) & "/" & Mid(CStr(Date - 1), Len(Date - 1) - 1, 2) & "#"

Мне не понятно почему два запроса с одинаковыми выборками и с одной и той же переменной:

con.Execute "SELECT *" & _
" FROM Arenda" & _
" WHERE (('" & DData & "') Between DATEN And DATEK)"
работает нормально, а запрос:

con.Execute "SELECT *" & _
" INTO d:\CrSprav\Input\tblAr" & _" FROM Arenda" & _
" WHERE (('" & DData & "') Between DATEN And DATEK)"

не работает. Че не так посмотрите синтаксис Into может как то подругому надо указывать путь к таблице или указать DSN здесь.
...
Рейтинг: 0 / 0
непонятка с SQL запросом в ODBCDirect
    #33431908
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
\
попробуй так
SELECT *
INTO 'd:\CrSprav\Input\tblAr\имяфайла.dbf'
FROM Arenda

когда обращяешся к данным из вне то нужно указать сам путь и файл базы данных особенно если это fox или dBase которые используют папки для группировки таблиц

на счет соединения что бы проверить
вставь Ado в форму создай connetionstring и DSN файл просмотри в строке
connetionstring параметры соединения можешь даже скопировать этот текст и использовать в качестве соединения con
...
Рейтинг: 0 / 0
непонятка с SQL запросом в ODBCDirect
    #33432950
MAzamat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TIKO\
попробуй так
SELECT *
INTO 'd:\CrSprav\Input\tblAr\имяфайла.dbf'
FROM Arenda


Так тоже попробовал, таже ошибка. У меня должен создаться файл tblAr.dbf
SELECT *
INTO 'd:\CrSprav\Input\tblAr.dbf'
FROM Arenda

Я гдето видел что в FoxPro синтаксис запросов INTO ... и INSERT ... INTO ...
отличается от Access-го, что надо INTO писать в самом конце. Примерно вот так:
SELECT *
FROM Arenda
WHERE (('" & DData & "') Between DATEN And DATEK)
INTO d:\CrSprav\Input\tblAr.dbf

Подскажите синтаксис, кто знает, этих SQL запросов в FoxPro. (INTO ... и INSERT ... INTO ...).
...
Рейтинг: 0 / 0
непонятка с SQL запросом в ODBCDirect
    #33433050
Посмотри здесь .
...
Рейтинг: 0 / 0
непонятка с SQL запросом в ODBCDirect
    #33434625
MAzamat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователь2Посмотри здесь .

Спасибо за совет. Нашел кое что.

Сейчас запрос переделал по синтаксису FoxPro
con.Execute "SELECT *" & _
" FROM c:\NSI\Arenda.dbf" & _
" WHERE (('" & DData & "') Between DATEN And DATEK)" & _
" INTO TABLE d:\CrSPRAV\Input\tblAr.dbf"
Работает вроде без ошибок но таблицу в указанном месте не создает, хотя тот же запрос попробовал на FoxPro запустить
SELECT *;
FROM c:\NSI\Arenda.dbf;
WHERE (('20051212') Between DATEN And DATEK);
INTO TABLE d:\CrSPRAV\Input\tblAr.dbf

нормально создает таблицу в указанном месте. У кого есть какие новые соображения всегда им рад :-)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / непонятка с SQL запросом в ODBCDirect
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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