Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO Command / 13 сообщений из 13, страница 1 из 1
12.02.2011, 20:38
    #37113299
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
Не могу найти ничего внятного по объекту ADO Command. Задача простая - insert, update. Где-то здесь была ссылка на внятное описание.
Поиск не рулит. На MS тоже попадаются обрывки.

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
12.02.2011, 21:38
    #37113348
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
Потому что для этого не нужен command.
cn.execute "insert into ..."
...
Рейтинг: 0 / 0
12.02.2011, 22:07
    #37113382
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
Antonariy,
Да, можно и Connection, наверно сейчас так и сделаю. Но Command сильная штука, кот раньше не использовал, с возможностью повторного использования и пр. Хочу с этим разобраться.
Хотя уже под ADO.NET начал делать. Там вообще ничего непонятно. Коды сами генерятся страницами (хрен разберешься), и что там нагенерилось, и что с ними дальше делать - полная загадка. Но это совсем другая тема. :)
...
Рейтинг: 0 / 0
13.02.2011, 07:14
    #37113564
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
Танк тоже сильная штука, но давить им тараканов нецелесообразно.
...
Рейтинг: 0 / 0
15.02.2011, 22:20
    #37118331
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
Antonariy,
Вообще оригинально, спрашивалось - где внятно почитать про command, а в ответ про тараканов. :) Чего-то цельно-внятного про command так и не нашел. Обрывки одни.
Да уже пару дней назад сделал под connection, не проблема.
Тут тоже возникает вопрос. Как писалось ранее, нужен insert и update.
Делаем так, - вначале insert. По ошибке insert (строка уже есть) делаем update.
Здесь объект Connection - http://msdn.microsoft.com/en-us/library/ms807027.aspx#workshp2_topic4. Ну нет у него номеров ошибок, а ерроры могут быть самые разные. А хочется нормальный обработчик по номеру ошибки, а не просто, если инсерт не проходит - делаем апдейт.
...
Рейтинг: 0 / 0
15.02.2011, 22:32
    #37118350
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
YUBA,

а где база находится? В смысле какой сервер БД?
А почему не сделать два запроса, один на обновление, а второй на вставку, если обновления не получилось?
...
Рейтинг: 0 / 0
15.02.2011, 23:25
    #37118403
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
YUBAНе могу найти ничего внятного по объекту ADO Command.
сюда
...
Рейтинг: 0 / 0
17.02.2011, 11:12
    #37121794
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
Игорь ГорбоносYUBA,
а где база находится? В смысле какой сервер БД?
А почему не сделать два запроса, один на обновление, а второй на вставку, если обновления не получилось? Так собственно и делаю.
On Error resume next
...insert...
If Err... Then
...update...
....
...
Рейтинг: 0 / 0
17.02.2011, 11:14
    #37121804
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
.Михаил.YUBAНе могу найти ничего внятного по объекту ADO Command.
сюда
Спасибо.
...
Рейтинг: 0 / 0
17.02.2011, 11:26
    #37121836
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
> Автор: YUBA
> Так собственно и делаю.
> On Error resume next


Ты не понял. Я на например, на MSSQL2000 использую следующую конструкцию
Код: 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.
DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT,
     ?sDocs

UPDATE cash_flows
SET    date_revision = GETDATE(),
       payment_order = a.payment_order,
       amount = a.amount
FROM   cash_flows cf
       INNER JOIN OPENXML(@idoc, 'VFPData/doc_val_acc',  2 )
            WITH
            (
                payment_order VARCHAR( 64 ),
                date_info DATETIME,
                amount FLOAT,
                code_acc INT
            ) a
            ON  cf.code_acc = a.code_acc
            AND cf.date_info = a.date_info

/* все что не обновилось, вставится следующим запросом */

INSERT INTO cash_flows
  (
    date_revision,
    payment_order,
    code_acc,
    date_info,
    amount
  )
SELECT GETDATE() AS date_revision,
       a.payment_order,
       a.code_acc,
       a.date_info,
       a.amount
FROM   OPENXML(@idoc, 'VFPData/doc_val_acc',  2 )
       WITH
       (
           payment_order VARCHAR( 64 ),
           date_info DATETIME,
           amount FLOAT,
           code_acc INT
       ) a
WHERE  NOT EXISTS (
           SELECT  1 
           FROM   cash_flows cf
           WHERE  cf.code_acc = a.code_acc
                  AND cf.date_info = a.date_info
       )

EXEC sp_xml_removedocument @idoc

И все это выполняется одним батчем.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
17.02.2011, 21:48
    #37123368
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
Игорь Горбонос> Автор: YUBA
> Так собственно и делаю.
> On Error resume next


Ты не понял. Я на например, на MSSQL2000 использую следующую конструкцию
+
Код: 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.
DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT,
     ?sDocs

UPDATE cash_flows
SET    date_revision = GETDATE(),
       payment_order = a.payment_order,
       amount = a.amount
FROM   cash_flows cf
       INNER JOIN OPENXML(@idoc, 'VFPData/doc_val_acc',  2 )
            WITH
            (
                payment_order VARCHAR( 64 ),
                date_info DATETIME,
                amount FLOAT,
                code_acc INT
            ) a
            ON  cf.code_acc = a.code_acc
            AND cf.date_info = a.date_info

/* все что не обновилось, вставится следующим запросом */

INSERT INTO cash_flows
  (
    date_revision,
    payment_order,
    code_acc,
    date_info,
    amount
  )
SELECT GETDATE() AS date_revision,
       a.payment_order,
       a.code_acc,
       a.date_info,
       a.amount
FROM   OPENXML(@idoc, 'VFPData/doc_val_acc',  2 )
       WITH
       (
           payment_order VARCHAR( 64 ),
           date_info DATETIME,
           amount FLOAT,
           code_acc INT
       ) a
WHERE  NOT EXISTS (
           SELECT  1 
           FROM   cash_flows cf
           WHERE  cf.code_acc = a.code_acc
                  AND cf.date_info = a.date_info
       )

EXEC sp_xml_removedocument @idoc

И все это выполняется одним батчем.


Так не получится. Все запросы формируются во время исполнения прг, включая имена таблиц и условия.
...
Рейтинг: 0 / 0
17.02.2011, 22:21
    #37123406
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
YUBA,
Ну не что чтобы не получится, можно и через динамический SQL.
После прочтения предложенной вам ссылки у вас остались какие-то вопросы по ADO.Command ?
...
Рейтинг: 0 / 0
17.02.2011, 22:39
    #37123420
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO Command
big-dukeYUBA,
Ну не что чтобы не получится, можно и через динамический SQL.
После прочтения предложенной вам ссылки у вас остались какие-то вопросы по ADO.Command ?
Хороший материал, но до дела не дошло, пока изучаю. Более менее понятно.
Динам SQL - признаться даже не слышал.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO Command / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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