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

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

а где база находится? В смысле какой сервер БД?
А почему не сделать два запроса, один на обновление, а второй на вставку, если обновления не получилось?
...
Рейтинг: 0 / 0
ADO Command
    #37118403
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAНе могу найти ничего внятного по объекту ADO Command.
сюда
...
Рейтинг: 0 / 0
ADO Command
    #37121794
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносYUBA,
а где база находится? В смысле какой сервер БД?
А почему не сделать два запроса, один на обновление, а второй на вставку, если обновления не получилось? Так собственно и делаю.
On Error resume next
...insert...
If Err... Then
...update...
....
...
Рейтинг: 0 / 0
ADO Command
    #37121804
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.YUBAНе могу найти ничего внятного по объекту ADO Command.
сюда
Спасибо.
...
Рейтинг: 0 / 0
ADO Command
    #37121836
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: 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
ADO Command
    #37123368
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос> Автор: 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
ADO Command
    #37123406
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,
Ну не что чтобы не получится, можно и через динамический SQL.
После прочтения предложенной вам ссылки у вас остались какие-то вопросы по ADO.Command ?
...
Рейтинг: 0 / 0
ADO Command
    #37123420
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeYUBA,
Ну не что чтобы не получится, можно и через динамический SQL.
После прочтения предложенной вам ссылки у вас остались какие-то вопросы по ADO.Command ?
Хороший материал, но до дела не дошло, пока изучаю. Более менее понятно.
Динам SQL - признаться даже не слышал.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO Command
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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