Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / строка SQL / 23 сообщений из 23, страница 1 из 1
18.04.2008, 15:21
    #35265015
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
пишу так
Код: plaintext
1.
select [Primechanie] from BD
получаю ошибку 3265, Не удается найти об'ект в семействе, соответствующий требуемому имени или порядковому номеру.
а если так писать

Код: plaintext
1.
select [Theme],[Technology],[Equipment],[Region],[Owner],[Owner_outgoing_number],[Declared_Region],[Primechanie],[Sostoyanie_zayavki],[Nomer_Reestra],[Data_Reestra],[Ispolnitel] from BD
т.е. выбираю все поля из таблицы то всё ОК
происходит эта ошибка с некоторыми полями, если писать запрос в Accesse то никаких ошибок не возникает.
В чём засада?
...
Рейтинг: 0 / 0
18.04.2008, 16:49
    #35265392
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Может где-то русская буква в названии закралась?

С уважением, Николай.
...
Рейтинг: 0 / 0
18.04.2008, 20:04
    #35265775
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Мля, всю голову уже сломал.
Русских букв нет.
Копирую строку sql из debug.print вставляю в запрос(в Access) - ошибок нет, получаю данные.
Из VB, ну никак!
Отдельно это поле(например поле Primechanie) из VB не выбирает, а если в наборе с другими полями то пожалуйста, все работает.
...
Рейтинг: 0 / 0
19.04.2008, 13:58
    #35266194
ВasiС
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Попробуй перименовать поле [Primechanie] - может оно зарезервировано
Перезапусти Акцесс
Посмотри какие названия полей отдаёт рабочий запрос


У меня подобная морока была с полем Label - пришлось переименовывать.
...
Рейтинг: 0 / 0
20.04.2008, 14:32
    #35266930
Ммихалыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Как на счет того, чтобы написать вот так :
Код: plaintext
select [таблица].[поле] from BD ;
, что есть более корректно ? (попробуй так же без квадратных скобок).
...
Рейтинг: 0 / 0
21.04.2008, 10:27
    #35267722
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
где код, на котором выдается данная ошибка?
могу только предположить, что это поле у вас мемо и вы с ним некорректно работаете.
...
Рейтинг: 0 / 0
21.04.2008, 15:01
    #35268636
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
попробуй так
Код: plaintext
select `Primechanie` from BD
...
Рейтинг: 0 / 0
21.04.2008, 16:19
    #35268996
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Ошибка происходит при открытии рекордсета
Код: plaintext
1.
rs.Open sqlStr, cn, adOpenDynamic, adLockBatchOptimistic
строка sqlStr формируется динамически, т.е. на основе полей таблицы которые выберет пользователь
Строка формируется корректно, проверял не раз, доказательством правильности формирования sqlStr строки служит то что скопировав сформированную строку из debug.print вставляю в Access и получаю данные.
методы предложенные уважаемыми Ммихалыч и TIKO тоже не срабатывают.
формат поля Primechanie - текстовый.
...
Рейтинг: 0 / 0
21.04.2008, 16:40
    #35269077
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
adOpenStatic, adLockreadOnly
...
Рейтинг: 0 / 0
21.04.2008, 16:40
    #35269082
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Для "динамика" и "апдейтабле" недостаточно информации для апдейта полей если берете одно поле (без ключевого)
...
Рейтинг: 0 / 0
21.04.2008, 16:54
    #35269152
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
По всякому пробовал и статик и динамик и курсор серверный и клиентский, все равно не хочет!
...
Рейтинг: 0 / 0
21.04.2008, 17:45
    #35269411
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Строка подключения какая?
Покажите код подключения к mdb.
...
Рейтинг: 0 / 0
21.04.2008, 20:07
    #35269719
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public cn As New ADODB.Connection
Public rs  As New ADODB.Recordset

strSQL = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\БД.mdb"
Set cn = New Connection
cn.CursorLocation = adUseClient
cn.ConnectionString = strSQL
cn.Open

rs.Open sqlStr_Exc, cn, adOpenDynamic, adLockPessimistic
...
Рейтинг: 0 / 0
21.04.2008, 20:22
    #35269739
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
2 timtim>
Вы бы попробовали создать в чистом MDB одну эту табличку заново с таким полем и попробовали бы свой запрос - мне кажется, должен получиться.
MDB - они же часто глючат.
...
Рейтинг: 0 / 0
21.04.2008, 20:52
    #35269783
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
kefi2 timtim>
Вы бы попробовали создать в чистом MDB одну эту табличку заново с таким полем и попробовали бы свой запрос - мне кажется, должен получиться.
MDB - они же часто глючат.
Спасибо, но фокус не удался.
...
Рейтинг: 0 / 0
21.04.2008, 22:33
    #35269870
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Не поленился, проверил вашу таблицу - работает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Option Explicit

Dim conn As ADODB.Connection

Private Sub btnCreateTable_Click()
   Dim ss() As String
   ss() = Split("[Theme],[Technology],[Equipment],[Region],[Owner],[Owner_outgoing_number],[Declared_Region],[Primechanie],[Sostoyanie_zayavki],[Nomer_Reestra],[Data_Reestra],[Ispolnitel]", ",")
   Dim i As Long
   Dim s As String
   s = "CREATE TABLE [BD] (" & ss( 0 ) & " Char(10)"
   For i =  1  To UBound(ss)
      s = s & "," & Trim(ss(i)) & " Char(10)"
   Next
   conn.Execute s & ")"
End Sub

Private Sub btnTest_Click()
   Dim rs As New ADODB.Recordset
   Dim rs2 As New ADODB.Recordset
   Dim f As ADODB.Field
   rs.Open "SELECT * FROM Bd", conn, adOpenStatic, adLockReadOnly
   For Each f In rs.Fields
      rs2.Open "SELECT " & f.Name & " FROM BD", conn
      Debug.Print "Open field " & f.Name; " success!"
      rs2.Close
   Next
End Sub

Private Sub Form_Load()
   Set conn = New ADODB.Connection
   conn.CursorLocation = adUseClient
   conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB1.mdb;Persist Security Info=False"
   conn.Open
End Sub
...
Рейтинг: 0 / 0
22.04.2008, 11:13
    #35270583
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Рекордсет и соединение у меня глобальные, об'явлены в модуле.
Если в каждой процедуре где открывается рекордсет писать
Код: plaintext
1.
Dim rs As New ADODB.Recordset
то все работает.
скажите пожалуйста что я не так делаю.
...
Рейтинг: 0 / 0
22.04.2008, 11:23
    #35270627
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
если глобальный то закрывать при окрытии

Код: plaintext
1.
If rs.State = adStateOpen Then rs.Close
rs.Open .........

а соединение можно не трогать, но закрывть при выходе из программы
...
Рейтинг: 0 / 0
22.04.2008, 11:26
    #35270634
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
рекордсет закрываю в конце каждой процедуры в которой он открывается
...
Рейтинг: 0 / 0
22.04.2008, 11:28
    #35270644
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Старайтесь не использовать глобальных рекордсетов. В крайнем случае на уровне формы (если к нему привязаны контролы, грид например).
...
Рейтинг: 0 / 0
22.04.2008, 11:53
    #35270750
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Грид как раз то и привязан.
...
Рейтинг: 0 / 0
22.04.2008, 13:33
    #35271168
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Сообщение об ошибке говорят о проблеме с SQL.
Но маленький совет: когда у вас грид привязан к рекордсету, надо этот рекордсет пересоздать когда состав полей его меняется:
Код: plaintext
1.
2.
set rs = new ADODB.Recordset
rs.open .....
set grid.DataSource = rs

и еще: объявляйте этот рекордсет внутри формы.
...
Рейтинг: 0 / 0
22.04.2008, 13:35
    #35271175
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
строка SQL
Уфф, спасибо всем за участие, всё пока работает.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / строка SQL / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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