Страница: 1 |
Страница: 1 |
Вопрос: PARADOX 7.X и VB
Добавлено: 26.07.06 16:11
Автор вопроса: alex | ICQ: 220447048
Уважаемые All. Бьюсь уже с неделю по поводу работы vb с Paradox 7. Помогите плиз. Чтение базы работает на ура, даже несколькими способами
Dim db2 As DAO.Database
Dim rs2 As DAO.Recordset
Dim dbFile As String
dbFile = "C:\DATA\"
Set db2 = DBEngine.OpenDatabase(dbFile, False, False, "Paradox 7.X;")
sql = "SELECT * FROM TABLE_MAIN.DB"
Set rs2 = db2.OpenRecordset(sql, dbOpenDynaset)
Do While Not rs2.EOF ' заполнение шаблона названий и идентификаторов
List1.AddItem rs2("NAME")
rs2.MoveNext
Loop
rs2.Close
db2.Close
или
Dim sql As String
Dim m_Conn As ADODB.Connection
Set m_Conn = New ADODB.Connection
With m_Conn
.Provider = "Provider=MSDASQL.1;Extended Properties='DefaultDir=С:\DATA;Driver={Microsoft Paradox Driver (*.db )};DriverId=26;MaxBufferSize=2048;PageTimeout=600;'" ' Это провайдер SQL Server
.ConnectionString = MakeParadoxConnStr("С:\DATA")
.Open
End With
Dim m_Rs As ADODB.Recordset
Set m_Rs = m_Conn.Execute("SELECT * FROM TABLE_MAIN.DB") 'Получаемданные из таблицы
Do While Not m_Rs.EOF ' заполнение шаблона названий и идентификаторов
List1.AddItem m_Rs("NAME")
m_Rs.MoveNext
Loop
Подключается и делает выборку нормально, если не указывать условия выборки, например "SELECT * FROM TABLE_MAIN.DB WHERE ID='1964'", - тогда несоответствие типов данных
А насчет апдейтов вообще плохо ((
Dim db2 As DAO.Database
Dim rs2 As DAO.Recordset
Dim dbFile As String
Dim sql As String
dbFile = "С:\DATA\"
Set db2 = DBEngine.OpenDatabase(dbFile, False, False, "Paradox 7.X;")
'On Error Resume Next
sql = "UPDATE TABLE_MAIN.DB SET ADDRESS = '34143546FGSDFG' WHERE ID = '1965'"
db2.Execute sql, dbOpenDynaset
rs2.Close
db2.Close
Нет ли у кого рабочего кусочка, на посмотреть?
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #1
Добавлено: 27.07.06 09:33
>тогда несоответствие типов данных
Мож не надо ID в кавычки брать?
Почитай доки, наверное там что то есть...
Номер ответа: 2
Автор ответа:
alex
ICQ: 220447048
Вопросов: 1
Ответов: 4
Профиль | | #2
Добавлено: 27.07.06 11:57
И так и эдак пробовал.
Что интересно, для контроля выполнял запросы в Database Tour Pro, выплняются с тем же "успехом" если подключение было через ODBC, если подключить через BDE все в полном порядке.
Тогда вопрос как скрестить VB и BDE
Номер ответа: 3
Автор ответа:
alex
ICQ: 220447048
Вопросов: 1
Ответов: 4
Профиль | | #3
Добавлено: 27.07.06 13:21
Так. с выборкой/чтением разобрался, действительно различные типы данных в запрсе и в полях, ну там, танцы с бубном вокруг кавычек.
Это-то ладно, но мне ж еще и ПИСАТЬ в базу НАДО, редактировать.
Ругается - "В операции должен использоваться обновляемый запрос"
Номер ответа: 4
Автор ответа:
ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #4
Добавлено: 28.07.06 13:15
В Делфях НУжно было так писать.
SQL_Code
ExecSQL - еслиписать или обновлять. Видимо тут у тя также что нить.Я работал только с БДЕ, и Парадокс у меня был по младше, проблемы были только с организацией Хранимых процедур. А вообще читал localSQL и все нормально...
Номер ответа: 5
Автор ответа:
alex
ICQ: 220447048
Вопросов: 1
Ответов: 4
Профиль | | #5
Добавлено: 31.07.06 09:57
Парадокс именно 7й, тут ничего не попишешь (. А примерчик на VB?
Попробовал так:
Dim db2 As DAO.Database
Dim rs2 As DAO.Recordset
Dim dbFile As String
dbFile = "C:\DATA\"
Set db2 = DBEngine.OpenDatabase(dbFile, False, False, "Paradox 7.X;"
sql = "SELECT * FROM TABLE_MAIN.DB"
Set rs2 = db2.OpenRecordset(sql, dbOpenDynaset, dbOptimistic)
rs2.Edit
rs2.Fields("ADDRESS".Value = "Yjdsq flhtc"
rs2.Update
rs2.Close
db2.Close
Ругается на rs2.Edit, говорит что база или объект доступны только для чтения - нагло врет. Может надо где насильно указать на возможность редактирования?