Прога делает SELECT,а на ДРУГИХ компах результат SEL пустой

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Прога делает SELECT,а на ДРУГИХ компах результат SEL пустой

Сообщение parrel » 13.07.2006 (Чт) 9:12

Есть база оракл. подключен через Microsoft OLE DB Provider for Oracle.
Данные из таблицы выводятся в DataGrid через ADOdc.
Все работает замечательно. при переносе проги на другую машину DATAGRID оказывается пустым ((((
причем прога компилилась и далее обрабатывалась с помощью Package & Deployment Wizards, чтобы влезли все библиотеки.
Доступ к базе на другой машине имеется.
И еще один попутный вопрос. Можно ли библиотеки засунуть в исполняемый EXE чтобы без инсталлятора все работало?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.07.2006 (Чт) 9:20

Есть база оракл. подключен через Microsoft OLE DB Provider for Oracle.
Данные из таблицы выводятся в DataGrid через ADOdc.
Все работает замечательно. при переносе проги на другую машину DATAGRID оказывается пустым ((((
С высокой долей вероятности виноват ADODC. Советую от него избавиться.
Можно ли библиотеки засунуть в исполняемый EXE чтобы без инсталлятора все работало?
Теоретически да, даже есть специальный упаковщик, Fusion называется; практически... не слышал, чтобы из этого выходило что-то путное.
Лучший способ понять что-то самому — объяснить это другому.

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 9:28

а как от него избавиться с минимальными потерями? )

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.07.2006 (Чт) 9:35

Выбираешь его на форме, жмешь del :lol:
А если серьезно, то нужно его заменить примерно таким кодом:
Код: Выделить всё
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.CursorLocation = adUseClient
cn.ConnectionString = 'как ты там коннектишься к ораклу
cn.Open
rs.Open "Select * from ...", cn, adOpenStatic, adLockBatchOptimistic
Set rs.ActiveConnection = Nothing 'по желанию
Set DataGrid1.DataSource = rs
Лучший способ понять что-то самому — объяснить это другому.

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 9:42

спасибо большое!

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 11:32

а как присвоить Label. значение полученное из базы вышеописанным способом?
при попытке установить
Set Label1.DataSource= rs
и Label1.DataField="нужный запрос" ничего не получается (((((
однако при ADO (т.е. первоначальное функционирование программы) все это работало и в Label подставлялось нужная цифра

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.07.2006 (Чт) 13:00

В Label1.DataField нужно прописать название поля, а потом присвоить DataSource.
Лучший способ понять что-то самому — объяснить это другому.

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 13:13

Когда я использую ADO в Label1.DataField я прописывал запрос Select
при этом такой же селект был в настройках AdoDC1.
а в Label1.DataSource стояло AdoDC1
Теперь все время ругается на unable to bind to field or Data Member "то что забито в Label1.DataField"

В Label1.DataField нужно прописать название поля, а потом присвоить DataSource. - это не проходит. Что я не так делаю?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.07.2006 (Чт) 13:16

Код: Выделить всё
rs.Open "Select SomeField from SomeTable", cn, adOpenStatic, adLockBatchOptimistic
Label1.DataField = "SomeField"
Set Label1.DataSource = rs
Лучший способ понять что-то самому — объяснить это другому.

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 13:25

спасибо большое

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 13:40

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rr As New ADODB.Recordset

Private Sub Form_Load()
cn.CursorLocation = adUseClient
cn.ConnectionString = "строка подключения к ораклу"
cn.Open
rs.Open "select entity_id , name_reg from MRC_LEVEL_TAB order by name_reg", cn, adOpenStatic, adLockBatchOptimistic
rr.Open "select MAX(entity_id) from mrc_level_tab where entity_id like '00%'", cn, adOpenStatic, adLockBatchOptimistic
Set DataGrid1.DataSource = rs
Label2.DataField = "MAX(entity_id)"
Set Label2.DataSource = rr
Set rs.ActiveConnection = Nothing
End Sub

Вот мой код, заметил что БЕЗ Label программа запускается на других компах, а с Label выдает ошибку какого то класса. Очень непонятно , т.к. ничего нового ведь не добавлено. что это может быть?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.07.2006 (Чт) 13:52

"MAX(entity_id)" - так нельзя. здесь надо писать только наименование поля из резалтсета. :!:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.07.2006 (Чт) 13:53

... select MAX(entity_id) AS MyField from...

Label2.DataField = "MyField"

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.07.2006 (Чт) 13:54

Вот именно :arrow:
Код: Выделить всё
rr.Open "select MAX(entity_id) as MaxEntity from ....
Label2.DataField = "MaxEntity "
Последний раз редактировалось Antonariy 13.07.2006 (Чт) 13:55, всего редактировалось 1 раз.
Лучший способ понять что-то самому — объяснить это другому.

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 13:55

а как это сделать? понимаю что ламерский вопрос...но если не трудно
и тогда почему у меня то эта прога работает?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.07.2006 (Чт) 13:56

Еще раз:
select MAX(entity_id) as MaxEntity from ....
Лучший способ понять что-то самому — объяснить это другому.

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 14:01

это я понял.....у меня то на машине все работает!!!!!
но на других компах выдает ошибку класса. ((((
если закомментить строчки

Label2.DataField = "MAX(entity_id)"
Set Label2.DataSource = rr

то все работает и на других машинах

parrel
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 26.06.2006 (Пн) 9:12

Сообщение parrel » 13.07.2006 (Чт) 14:03

в сысле уже исправленную строчку конечно
Label2.DataField = "MaxEntity"


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 116

    TopList