Что нового

Работа с БД Paradox (файлы .db)

YOgen

Знающий
Сообщения
58
Репутация
5
Подскажите, пожалуйста, как можно организовать работу с БД Paradox (файлы .db) в Autoit?
Во вложении один из примеров.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,487
Вот тут есть что то по теме.
 
Автор
YOgen

YOgen

Знающий
Сообщения
58
Репутация
5
Подключение к БД, SELECT, INSERT... все работает, НО вот INSERT в столбец TEXT вылетает с ошибкой.
Во все другие (в OPER и т.д.) нормально.
Если переименовать TEXT в TEXT1 (сторонним софтом) - тоже все нормально работает.
В чем может быть дело (что за мистика именно со словом TEXT) ? :'(

Код:
#include <_SQL.au3>

$db_path = 'c:\Base\'
$db = '4'

$sql = _SQL_Startup()
_SQL_ParadoxConnect($sql, $db_path, $db_path)
;_SQL_Execute($sql, "INSERT INTO 4(OPER) VALUES ('123')") ; работает
_SQL_Execute($sql, "INSERT INTO 4(TEXT) VALUES ('some_text')")
_SQL_Close($sql)

Func _SQL_ParadoxConnect($ADODBHandle = -1, $sFilePath1 = '', $Dir='')
	$SQLErr = ''
	If $ADODBHandle = -1 Then $ADODBHandle = $SQL_LastConnection
	If Not IsObj($ADODBHandle) Then
		$SQLErr = 'Invalid ADODB.Connection object, use _SQL_Startup()'
		Return SetError($SQL_ERROR, 0, $SQL_ERROR)
	EndIf
	$ADODBHandle.Open('Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 4.X;DefaultDir=' & $Dir & ';Dbq=' & $sFilePath1 & ';CollatingSequence=ASCII;')
	If @error Then
		$SQLErr = 'Connection Error'
		Return SetError($SQL_ERROR, 0, $SQL_ERROR)
	EndIf
	Return SetError($SQL_OK, 0, $SQL_OK)
EndFunc


БД и _SQL.au3 во вложении.

Очень надеюсь, что кто-нибудь сможет подсказать какое-нибудь решение... уж очень надо :-[
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Возможно, что когда ты делаешь запрос с параметром 'TEXT' имеется в виду, что обращение идет не к названию поля в БД, а к типу данных ?

Попробуй поле переименовать в 'CHAR', а потом еще и запрос сделать с параметром 'CHAR'... останется ли ошибка ?
 
Автор
YOgen

YOgen

Знающий
Сообщения
58
Репутация
5
Попробуй поле переименовать в 'CHAR', а потом еще и запрос сделать с параметром 'CHAR'... останется ли ошибка ?
Да, ошибка осталась. Если сделать CHAR1, то все проходит без ошибки. :scratch:
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Тогда выход остается: не использовать название полей в БД идентично названию типу данных ;)

А возможно еще вариант:
Код:
"INSERT INTO 4('TEXT') VALUES ('some_text')"
 
Автор
YOgen

YOgen

Знающий
Сообщения
58
Репутация
5
Код:
INSERT INTO 4('TEXT') VALUES ('some_text')
Пробовал этот вариант, не желает принимать :(

А "не использовать название полей в БД идентично названию типу данных" не могу. БД не мною создавалась, под нее заточен софт, т.е. переделай я БД, придется переписывать программулину.
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Как говориться: срамся, но не сдамся- а так ?))))
Код:
"INSERT INTO '4' SET 'TEXT'='some_text'"
 
Автор
YOgen

YOgen

Знающий
Сообщения
58
Репутация
5
Как говориться: срамся, но не сдамся- а так ?))))
Код:
"INSERT INTO '4' SET 'TEXT'='some_text'"

И так не проходит (и с кавычками и без кавычек в разных вариациях). Так даже в поля где нормально вставляются данные не пишет :'(


Спустя час биться головой о стену :laugh: :laugh: :laugh:
получилось так:
Код:
INSERT INTO 4([TEXT]) VALUES ('some_text')

Спасибо ---Zak---, что не прошел мимо и за попытки помочь :beer:
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
OffTopic:
я много всего видел, но чтобы квадра скобки в запросе были - впервые...


Оказывается так и должно быть - http://ru.wikipedia.org/wiki/Insert_(SQL)

Код:
INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<Значение>,...)

PS: :beer:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
---Zak--- [?]
Оказывается так и должно быть
:rofl:
квадратная скобка что в википедии означает что название столбца куда вводить данные не обязательно. так же как угловые скобки означают что обязательно.
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
2 Kaster
Все может быть я в SQL не шарю... душа как-то ближе к mySQL лежит - так каФычки))))

PS: однако автору темы эти самые [] помогли...
 
Верх