Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ADO / 7 сообщений из 7, страница 1 из 1
21.02.2006, 16:43
    #33558907
Роман Новичек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO
Привет всем!!!
Вразумите, пожалуйста, как этим пользоваться. Вот что я уже умею:
oConn = CREATEOBJECT("ADODB.Connection")
oConn.ConnectionString= "provider=vfpoledb.1; data source="+_pathBD
oConn.Open
А теперь хочу выполнить, например удаление:
oConn.Execute("DELETE FROM type_auto WHERE id="+ALLTRIM(STR(nTypeAuto)))
oConn.Close

Только оно ругается. Вообщем вопросик: Как в Execute передать параметр? Или надо создавать ADO.Command? Только я и там недопонимаю как передавать параметры. Понял что их надо как-то создавать (ADO.Parameters), только никак не пойму КАК?
На MSDN не ссылайтесь, пожалуйста, т.к. с английским у меня плохо.
...
Рейтинг: 0 / 0
21.02.2006, 19:48
    #33559348
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO
если ты работаешь из вфп с вфп"шными данными то адо тебе не нужен




так и пиши:

open database (_pathBD)
DELETE FROM type_auto WHERE id="+ALLTRIM(STR(nTypeAuto))



Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
22.02.2006, 05:41
    #33559679
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO
Роман НовичекКак в Execute передать параметр используй ODBC, SQLSTRINGCONNECT() и SQLEXEC(). в SQLEXEC() можно передавать параметры. лехко
...
Рейтинг: 0 / 0
22.02.2006, 05:55
    #33559683
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO
Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
PRIVATE ConnectString

ConnectString = ;
	"driver={SQL Server};" ;
	+ "server=mydbserver;" ;
	+ "uid=mylogin;" ;
	+ "pwd=mypassword;" ;
	+ "database=mydb"

TRY
	PRIVATE hConn, s, aErrors, i
	hConn = SQLSTRINGCONNECT(ConnectString)
	IF hConn <=  0 
		DIMENSION aErrors[ 1 ]
		s = "Ошибка подключения:" + CHR( 13 ) + CHR( 13 ) ;
			+ ConnectString + CHR( 13 )
		FOR i =  1  TO AERROR(aErrors)
			s = s + CHR( 13 ) + "SQL State: " + NVL(aErrors[i,  4 ], "Not available") ;
				+ IIF(ISNULL(aErrors[i,  5 ]), "", CHR( 13 ) + "#" + LTRIM(STR(aErrors[i,  5 ])) + " " + TRIM(aErrors[i,  3 ])) ;
				+ CHR( 13 )
		ENDFOR
		MESSAGEBOX(s,  16 , "Ошибка подключения: " + STR(NVL(aErrors[ 1 , 5 ],  0 ))
	ELSE
		PRIVATE cur, x, y, res
		cur = SYS( 2015 )
		x =  123 
		y = "asd"

		SQLString = ;
			"select * " ;
				+ "from " ;
					+ "mytable " ;
				+ "where " ;
					+ "mytable.mynumericfield = ?x " ;
					+ "and mytable.mycharacterfield like ?y "

		res = SQLEXEC(hConn, SQLString, cur)
		DO CASE
			CASE res <  0 
				DIMENSION aErrors[ 1 ]
				s = "Ошибка выполнения SQL-запроса:" + CHR( 13 ) + CHR( 13 ) ;
					+ SQLString + CHR( 13 )
				FOR i =  1  TO AERROR(aErrors)
					s = s + CHR( 13 ) + "SQL State: " + NVL(aErrors[i,  4 ], "Not available") ;
						+ IIF(ISNULL(aErrors[i,  5 ]), "", CHR( 13 ) + "#" + LTRIM(STR(aErrors[i,  5 ])) + " " + TRIM(aErrors[i,  3 ])) ;
						+ CHR( 13 )
				ENDFOR
				MESSAGEBOX(s,  16 , "Ошибка исполнения: " + STR(NVL(aErrors[ 1 , 5 ],  0 ))
			CASE res =  0 
				MESSAGEBOX("Запрос все еще асинхронно выполняется...")
			OTHERWISE
				MESSAGEBOX("Запрос выполнился успешно")
				IF USED(cur)
					SELECT (cur)
					BROWSE NORMAL IN WINDOW (thisform.Name) TITLE (SQLString)
					USE IN (cur)
				ELSE
					MESSAGEBOX("Сервер не вернул ни одного набора данных")
				ENDIF
		ENDCASE
	ENDIF
CATCH
	MESSAGEBOX(NVL(MESSAGE(), "Неопознанная летающая ошибка"),  16 , "Ошибка")
FINALLY
	TRY
		SQLDISCONNECT(hConn)
	CATCH
	ENDTRY
ENDTRY
...
Рейтинг: 0 / 0
22.02.2006, 09:23
    #33559875
Роман Новичек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO
Спасибо всем, огромное
...
Рейтинг: 0 / 0
22.02.2006, 09:41
    #33559907
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO
--Eugene--
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
PRIVATE ConnectString
....
CASE res <  0 
	DIMENSION aErrors[ 1 ]
	s = "Ошибка выполнения SQL-запроса:" + CHR( 13 ) + CHR( 13 ) ;
		+ SQLString + CHR( 13 )
	FOR i =  1  TO AERROR(aErrors)
		s = s + CHR( 13 ) + "SQL State: " + NVL(aErrors[i,  4 ], "Not available") + IIF(ISNULL(aErrors[i,  5 ]), "", CHR( 13 ) + "#" + LTRIM(STR(aErrors[i,  5 ])) + " " + TRIM(aErrors[i,  3 ])) + CHR( 13 )
	ENDFOR
ENDTRY
....

Код хорош, но я бы добавил еще анализ ошибки NVL(aErrors[5]) = 1205 - deadlocked и повторял в этом случае команду раз 10-30.
Если за 10-30 попыток deadlocked сам не "рассосался", вот тогда и выходил бы с ошибкой.
С уважением, Алексей.
...
Рейтинг: 0 / 0
23.02.2006, 01:32
    #33562068
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO
Hi Роман!

> Только оно ругается.

Как ругается, на что ругается? Может у тебя пробелы в пути к базе? Или это
не база а папка со свободными таблицами? Само соединение то установилось?
Выбрать данные из этой таблицы ты можешь?
У тебя в принципе нет параметров в этом коде - ты всё сцепил в одну строку.
С параметрами работают совсем по-другому - объяснять долго, да и вряд-ли оно
тебе нужно...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ADO / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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