Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Удаление Старые Данных из таблицы в SQL Server2005 / 25 сообщений из 42, страница 1 из 2
24.09.2010, 16:35
    #36865361
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
Я загружаю данные из 1С в Скул,как Удалить старые Данные из таблицы в скуле?
Вот так я удалю старые данные? :
Пока Выборка.Следующий()Цикл
Если Не ТекстЗапроса.Пустой() Тогда
ТекстЗапроса="DELETE FROM dbo.io_agent_debt";
Иначе
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"',"
+Выборка.Конрагент+",'"
+Выборка.ИНН+","
+Выборка.КПП+","
+Строка(Формат(Выборка.Сумма, "ЧДЦ=2; ЧРД=.; ЧГ"))+",'"
+Выборка.Док+"')" ;
Команда.CommandText=ТекстЗапроса;
КонецЕсли;
Или писать Процедуру:

СтрокаПодключения="Provider=SQLOLEDB.1;Password=123!;Persist Security Info=True;User ID=pol_test;Initial Catalog=ipol Source=PORServer";
DataBaseConnection = Новый COMObject("ADODB.Connection");
Кодировка = "windows-1251";
DataBaseConnection.ConnectionString =СтрокаПодключения ;
DataBaseConnection.Open();
Конрагент=Справочники.Конрагент.Выбрать();
Пока Конрагент.Следующий() Цикл
Команда=Новый COMОбъект("ADODB.Command");
Команда.ActiveConnectionataBaseConnection;
RS = Новый COMОбъект("ADODB.Recordset");
НаборЗаписей=RS;
ТекстЗапроса="DELETE FROM dbo.io_agent_debt WHERE company_inn='"+Конрагент.ИНН+"'";";
...
Рейтинг: 0 / 0
24.09.2010, 17:15
    #36865435
Stix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
bura_limonЯ загружаю данные из 1С в Скул,как Удалить старые Данные из таблицы в скуле?
Вот так я удалю старые данные? :
Пока Выборка.Следующий()Цикл
Если Не ТекстЗапроса.Пустой() Тогда
ТекстЗапроса="DELETE FROM dbo.io_agent_debt";
Иначе
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"',"
+Выборка.Конрагент+",'"
+Выборка.ИНН+","
+Выборка.КПП+","
+Строка(Формат(Выборка.Сумма, "ЧДЦ=2; ЧРД=.; ЧГ"))+",'"
+Выборка.Док+"')" ;
Команда.CommandText=ТекстЗапроса;
КонецЕсли;
Или писать Процедуру:

СтрокаПодключения="Provider=SQLOLEDB.1;Password=123!;Persist Security Info=True;User ID=pol_test;Initial Catalog=ipol Source=PORServer";
DataBaseConnection = Новый COMObject("ADODB.Connection");
Кодировка = "windows-1251";
DataBaseConnection.ConnectionString =СтрокаПодключения ;
DataBaseConnection.Open();
Конрагент=Справочники.Конрагент.Выбрать();
Пока Конрагент.Следующий() Цикл
Команда=Новый COMОбъект("ADODB.Command");
Команда.ActiveConnectionataBaseConnection;
RS = Новый COMОбъект("ADODB.Recordset");
НаборЗаписей=RS;
ТекстЗапроса="DELETE FROM dbo.io_agent_debt WHERE company_inn='"+Конрагент.ИНН+"'";";

на каждой итерации Выборки будете таблицу очищать?
в рекодсете нельзя выполнить delete, что то вы мутите там непонятное
в adodb.Command присваивайте текст запроса и делайте execute

я смотрю имя базы и пользователь поменялось
...
Рейтинг: 0 / 0
24.09.2010, 18:05
    #36865522
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
Stix
у нас в компании несколько СУБД(собственные разработки),и мы тащим из 1с всякую хрень туда,в данном случаи при загрузки мне не нужно старые данные которые заливалось ранее.Сначало надо очистить прежнее данные,и потом загрузить свежые данные.Вот и спрашиваю как мне написать..
Для меня слово рекотсет нечего не дает,т.к.только начинаю осваивать скул(вернее придется)
Имя базы и пользователь поменял из безопасности.Если можно опишите пожалуста как вы видите.Спасибо за отклик..
...
Рейтинг: 0 / 0
24.09.2010, 18:39
    #36865579
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
bura_limon,

Что является критерием старости данных и что Ваас не устраивает в собственном коде?
ЗЫ Вынести очистку из цикла не помещает - понятнее будет.
...
Рейтинг: 0 / 0
27.09.2010, 10:56
    #36867492
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
AHDP
Пример можно?!
...
Рейтинг: 0 / 0
27.09.2010, 13:08
    #36867840
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
понедельник день тяжелый
...
Рейтинг: 0 / 0
27.09.2010, 13:51
    #36867934
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
ну или как то так:
Команда.CommandText="INSERT INTO dbo.io_agent_debt VALUES (
?
,?
,?
,?
,?
,?
')";
Команда.Prepare=True;
Команда.Parameters.Refresh();
ValueTable=Выборка.Unload();
...
Рейтинг: 0 / 0
27.09.2010, 15:17
    #36868144
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
bura_limon,

У Вас в неком цикле (предположительно по данным, которые вы хотите вставить)
авторПока Выборка.Следующий()Цикл
1) удаление записи на первом проходе => вы теряеете при вставке первую запись;
2) вставка в таблицу записей начиная со второй (первую вы уже потеряли).

Выполните очистку таблицы ДО цикла вставки данных.

ЗЫ А пятница была легче? ;)
...
Рейтинг: 0 / 0
27.09.2010, 16:35
    #36868328
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
AHDP
ну вот об этом я и хочу у вас спрасить,как мне сделать до Цикла очистить Таблицу.написшети примерик какой нибудь.
...
Рейтинг: 0 / 0
27.09.2010, 17:15
    #36868417
Stix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
Код: plaintext
1.
2.
3.
4.
5.
Команда=Новый COMОбъект("ADODB.Command");
Команда.ActiveConnectionataBaseConnection;
ТекстЗапроса="DELETE FROM dbo.io_agent_debt ......";
Команда.CommandText = ТекстЗапроса;
Команда.Execute();

примерно так, примеров в инете достаточно много
...
Рейтинг: 0 / 0
27.09.2010, 17:18
    #36868421
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
Stix
все таки новой процедурой надо писать,и это удаления всей таблицы,а как можно просто очисть?!
...
Рейтинг: 0 / 0
27.09.2010, 17:18
    #36868423
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
очистка так по моему:TRUNCATE TABLE
...
Рейтинг: 0 / 0
27.09.2010, 17:24
    #36868433
Stix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
bura_limonStix
все таки новой процедурой надо писать,и это удаления всей таблицы,а как можно просто очисть?!

в чем проблема? как угодно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
......
конект к базе
Команда=Новый COMОбъект("ADODB.Command");
....
запрос.... delete  -- здесь я понимаю всю таблицу очищаем или по списку или каие то дргие 
условия
команда.CommandText=текстзапросаудаления
команда.execute();

Пока Выборка.Следующий()Цикл
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"',"
+Выборка.Конрагент+",'"
+Выборка.ИНН+"," 
+Выборка.КПП+","
+Строка(Формат(Выборка.Сумма, "ЧДЦ=2; ЧРД=.; ЧГ"))+",'"
+Выборка.Док+"')" ;
Команда.CommandText=ТекстЗапроса;
Команда.Execute();

...
Рейтинг: 0 / 0
27.09.2010, 17:27
    #36868443
Stix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
bura_limonStix
а как можно просто очисть?!

запрос очищающий все в таблице сразу, вместо delete

truncate table XXXXX
...
Рейтинг: 0 / 0
27.09.2010, 17:49
    #36868514
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
Вот как то так вы имеете виду?
Здесь я чистю:
Пока Выборка.Следующий()Цикл
ТекстЗапросаУдаления="TRUNCATE TABLE dbo.io_agent_debt VALUES('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"',"
+Выборка.Конрагент+",'"
+Выборка.ИНН+","
+Выборка.КПП+","
+Строка(Формат(Выборка.Сумма, "ЧДЦ=2; ЧРД=.; ЧГ"))+",'"
+Выборка.Док+"')" ;
Команда.CommandText=ТекстЗапросаУдаления;
Команда.Execute();

и следом создаю новую запись?:
Пока Выборка.Следующий()Цикл
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"',"
+Выборка.Конрагент+",'"
+Выборка.ИНН+","
+Выборка.КПП+","
+Строка(Формат(Выборка.Сумма, "ЧДЦ=2; ЧРД=.; ЧГ"))+",'"
+Выборка.Док+"')" ;
Команда.CommandText=ТекстЗапроса;
Команда.Execute();
КонецЦикла;
Попытка
НаборЗаписей.Close();
исключение
Сообщить("Ошибка: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
...
Рейтинг: 0 / 0
27.09.2010, 18:01
    #36868565
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
bura_limon,

Вы, к сожалению, не понимаете алгоритма обмена данными между вашими системами. Или что-то не договариваете. Или не дочитали определение DELETE.

Итак,

1) Вы по расписанию (запросу) передали некоторые данные (вызвав внутри цикла н-ное количество инсертов);
2) другое приложение обработало весь набор записей (а не обрабатывало их тригерами по мере того, как вы их туда вставляете);
3) Вы удаляете весь набор ранее переданных записей (DELETE) - очищаете таблицу;
4) переходите к шагу №1.

Итого: У вас одна команда DELETE для удаления старых записей и в цикле вставка новых данных.
...
Рейтинг: 0 / 0
27.09.2010, 18:03
    #36868571
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
AHDP
так понятно,спасибо,ну наверное завтра уже.........поздо 20-00 у нас
...
Рейтинг: 0 / 0
28.09.2010, 09:24
    #36869190
Stix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
судя по начальному коду вообще непонятно, что ТС хочет - в чистую таблицу писать, или подчищать и обновлять в таблице только данные по выборке отдельных контрагентов, стоит наверное логику на бумаге написать, бесполезно помогать, если ТС выдирает куски кем-то написанного кода для других задач и мешает все в одну кучу
...
Рейтинг: 0 / 0
28.09.2010, 10:20
    #36869290
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
Stix,

Как ни крути, а первую запись цикла он терял. Да и глупо передавая данные через буферную таблицу с тригером, не удалять из неё (в этом же триггере) обработанную запись.
...
Рейтинг: 0 / 0
28.09.2010, 11:27
    #36869504
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
подскажите,еще вот такая ошибка:
Ошибка: {Форма.Форма(156)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Incorrect syntax near ','.
Ошибка: {Форма.Форма(163)}: Ошибка при вызове метода контекста (Close): Произошла исключительная ситуация (ADODB.Recordset): Operation is not allowed when the object is closed.

Где синтаксическая ошибка,запятая?

ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"',"
+ВыборкаРез.type+",'"
+ВыборкаРез.Agent_name+"',"
+ВыборкаРез.inn+","
+ВыборкаРез.kpp+","
+Строка(Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0"))+",'"
+ВыборкаРез.comment+"')" ;

Еще не попадают данные Контрагентов у которых нет КПП,на isNULL добавил:
| ЕстьNull(ХозрасчетныйОбороты.Субконто1.ИНН,0) КАК inn ,
| ЕстьNull(ХозрасчетныйОбороты.Субконто1.КПП,0) КАК kpp,
в 1С отчете КПП если пустая колонка,но она все равно попадает в таблицу,и что странно некоторые КПП где пусто=0,а некоторые 0 не присваивает,то есть колонка пустая
...
Рейтинг: 0 / 0
28.09.2010, 11:39
    #36869546
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
В данных type или comment встречается ' .

Огласите весь 1Совский запрос.
...
Рейтинг: 0 / 0
28.09.2010, 11:51
    #36869579
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
ВЫБРАТЬ
| ХозрасчетныйОбороты.Период КАК dt,
| 1 КАК type,
| ХозрасчетныйОбороты.Субконто1 КАК agent_name,
| ЕстьNull(ХозрасчетныйОбороты.Субконто1.ИНН,0) КАК inn ,
| ЕстьNull(ХозрасчетныйОбороты.Субконто1.КПП,0) КАК kpp,
//| " +?(ЗначениеЗаполено(ВыборкаРез.kpp),ВыборкаРез.kpp,0)+ ",
| ХозрасчетныйОбороты.СуммаОборот КАК amount,
| ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОбороты.Регистратор) КАК comment
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет В ИЕРАРХИИ (&Счет), , , , ) КАК ХозрасчетныйОбороты
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ),
| 2,
| ХозрасчетныйОстаткиИОбороты.Субконто1,
| ХозрасчетныйОстаткиИОбороты.Субконто1.ИНН,
| ХозрасчетныйОстаткиИОбороты.Субконто1.КПП,
| ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток,
| ""Остаток на дату ""
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНачОстатки, &КонецПериода, Месяц, ДвиженияИГраницыПериода, Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстаткиИОбороты
|
|УПОРЯДОЧИТЬ ПО
| agent_name";
...
Рейтинг: 0 / 0
28.09.2010, 11:53
    #36869586
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
запятая где то лишняя
...
Рейтинг: 0 / 0
28.09.2010, 12:06
    #36869625
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
Шаблон запроса у вас правильный, запятая попадает из данных. Поставьте на эти поля замену ' на ".

В регистре есть? В каждом из подзапросов (ОБЪЕДЕНИТЬ <> ОБЪЕДЕНИТЬ ВСЕ)? Есть ошибка при добавлении записи?
...
Рейтинг: 0 / 0
28.09.2010, 12:32
    #36869680
bura_limon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление Старые Данных из таблицы в SQL Server2005
Поставьте на эти поля замену ' на "
ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ("+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"","
+ВыборкаРез.type+",""
+ВыборкаРез.Agent_name+"","
+ВыборкаРез.inn+","
+ВыборкаРез.kpp+","
+Строка(Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0"))+",""
+ВыборкаРез.comment+"")" ;

здесь вылезает ошибка Ожидается ключевое слово 'Исключение' ('Except'),или я что то не понял,и запятые не туда вставил.
Не совсем понятен вопрос :В регистре есть? В каждом из подзапросов (ОБЪЕДЕНИТЬ <> ОБЪЕДЕНИТЬ ВСЕ)? Есть ошибка при добавлении записи?
Я так понимаю какая то не совместимость символов между 1с и SQL
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Удаление Старые Данных из таблицы в SQL Server2005 / 25 сообщений из 42, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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