PDA

View Full Version : Visual Basic: Ткните пальцем, почему ошибка


-vika-
26-12-2005, 17:39
Функция "исправить" не работает, выдает ошибку
Run-time error '3265'
Объект, отвечающий заданному имени или порядковому номеру, не найден.


Private Sub Command1_Click()
' Muokkaa
Dim strSQL As String
Set Cnxn = New ADODB.Connection
strPath = lpolku
Set Cnxn = New ADODB.Connection
strPath = lpolku

strSQL = "SELECT * FROM Yhteistiedot"
strPath = lpolku
With Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
"Persist Security Info=False;Data Source=" & strPath & _
"; Mode=Read|Write"
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.CommandType = adCmdText
.RecordSource = strSQL
.Refresh
End With

Set Tulos = Adodc1.Recordset


strSQL = "UPDATE Yhteistiedot SET " _
& "Etunimi = '" & Text1.Text & "', " _
& "Sukunimi = '" & Text2.Text & "', " _
& "Syntymaaika = '" & Text3.Text & "', " _
& "Katuosoite = '" & Text4.Text & "', " _
& "Postinumero = '" & Text5.Text & "', " _
& "Postitoimipaikka_Kaupunki = '" & Text6.Text & "', " _
& "Internet_osoite='" & Text7.Text & "' " _
& "Internet_sivujen lisatiedot='" & Text8.Text & "', " _
& "Henkilon lisatiedot='" & Text9.Text & "', " _
& "WHERE id = " & Tulos![ID]


With Cnxn
strConn = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
"Persist Security Info=False;Data Source=" & strPath & _
"; Mode=Read|Write"
.Open strConn
.Execute strSQL, , adExecuteNoRecords
End With

End Sub


А функция "Добавить" -
Run-time error '-2147217900 (80040e14)'
Number of query values and destination fields aren't the same


Private Sub Command2_Click()
Dim strSQL As String

' Lisдд

strSQL = "INSERT INTO rekisteri (Etunimi, Sukunimi, Syntymaaika, Katuosoite, Postinumero, Postitoimipaikka_Kaupunki, Internet_osoite, Internet_sivujen lisatiedot, Henkilon lisatiedot) VALUES ('" _
& Text1.Text & "', '" & Text2.Text & "', '" & Text3.Text & "', '" & Text4.Text & "', '" & Text5.Text & "', '" & Text6.Text & "', '" & Text7.Text & "', '" & Text8.Text & "', '" & Text9.Text & "')"
'Debug.Print strSQL

Set Cnxn = New ADODB.Connection

strPath = lpolku

With Cnxn
strConn = "Provider=Microsoft.Jet.OLEDB.3.51;" & _
"Persist Security Info=False;Data Source=" & strPath & _
"; Mode=Read|Write"
.Open strConn
.Execute strSQL, , adExecuteNoRecords
End With

Load Form1
Form1.Show
Unload Me
End Sub

Suriken
26-12-2005, 17:42
Ну, мне кажется, что провайдер базы данных у тебя написан через пробел, поэтому его не находит по имени. Или он у тебя просто не установлен.

-vika-
26-12-2005, 17:44
Ну, мне кажется, что провайдер базы данных у тебя написан через пробел, поэтому его не находит по имени. Или он у тебя просто не установлен.

для тех кто в танке по подробнее....

Suriken
26-12-2005, 17:44
Во второй ошибке:
запрос на добавление
поля: Internet_sivujen lisatiedot, Henkilon lisatiedot
Тебе не кажется, что тут у тебя не два, а как минимум четыре стобца таблицы ;) Может, ты пропустила символ подчеркивания... :) Таким образом, получилось, что количество добавляемых стобцов в базе данных не 9, а больше, в то время как количество текстовых строк - ровно 9.

Списывать надо думая. :D

-vika-
26-12-2005, 17:46
Списывать надо думая. :Д


умри....Я не списываю

Suriken
26-12-2005, 17:48
умри....Я не списываю
ХЫХЫ))) Сканишь?

Suriken
26-12-2005, 17:50
Я думаю, что тебе в первой функции надо написать так:

Set Cnxn = New ADODB.Connection
strPath = lpolku


strSQL = "SELECT * FROM Yhteistiedot"
strPath = lpolku
With Cnxn

То есть, у тебя объявлена переменная Cnxn , ей и подсоединяйся к БД.
И удали вторичное объявление переменных Cnxn и strPath.

А переменная Adodc1 , которая у тебя стоит в операторе With , никгде не объявлена, ее и не находит.

-vika-
26-12-2005, 17:56
не работает
Может Adodc1 объявить надо куда-нить?

Suriken
26-12-2005, 17:58
не работает
Может Adodc1 объявить надо куда-нить?
Не, стоп.
Все я правильно сказал. Надо использовать существующий коннект к БД и все.
Но... у тебя есть таблица Yhteistiedot в базе данных, ты ее создавала? ;)

Кстати, я не разбираюсь в свойствах объекта ADODB.Connection, так что, если ты перемудрила с его полями, то ничем помочь не могу. :)

-vika-
26-12-2005, 18:02
Программа все видит, не может добавлять и исправлять. Таблица Yhteistiedot существует

Suriken
26-12-2005, 18:04
Кстати, а зачем ты в первой функции получаешь рекордсет? Ты же его нигде потом не используешь.
Не... используешь
Но ты выбираешь потом из рекордсета поле по его имени ID. А если у тебя там несколько рекордов? Цикл разве не нужен?

Suriken
26-12-2005, 18:07
Программа все видит, не может добавлять и исправлять.
Как же она все видит, если пишет, что объект не найден. ;) Осталось только выяснить, какой объект.
Один - это несуществующая переменная.
Второй возможный - свойство ADODB.Connection
Третий вариант - неверное обращение к полю рекорда из рекордсета

-vika-
26-12-2005, 18:23
Нам дали на время каникул все в етом виде. Учитель сказал найти ошибки, исправить их и сделать её чтоб она работала. Вот и сижу теперь.

-vika-
26-12-2005, 18:24
Как же она все видит, если пишет, что объект не найден. ;) Осталось только выяснить, какой объект.


имелла ввиду что она выдает прогу с данными как в базе, но когда исправляю или добаляю...выдает ошибки

let0
26-12-2005, 18:40
Как человек далёкий от программирования, сначала бы проверил формат запроса и формат таблицы.
Базу вроде как можно посмотреть Access:ом

let0
27-12-2005, 13:30
Как человек далёкий от программирования, сначала бы проверил формат запроса и формат таблицы.
Базу вроде как можно посмотреть Access:ом
:lol:
http://support.microsoft.com/kb/q197528/

-vika-
27-12-2005, 13:32
:lol:
/http://support.microsoft.com/kb/q197528

а по русски есть?