powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Удаление Старые Данных из таблицы в SQL Server2005
25 сообщений из 42, страница 1 из 2
Удаление Старые Данных из таблицы в SQL Server2005
    #36865361
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='"+Конрагент.ИНН+"'";";
...
Рейтинг: 0 / 0
Удаление Старые Данных из таблицы в SQL Server2005
    #36865435
Stix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Удаление Старые Данных из таблицы в SQL Server2005
    #36865522
bura_limon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stix
у нас в компании несколько СУБД(собственные разработки),и мы тащим из 1с всякую хрень туда,в данном случаи при загрузки мне не нужно старые данные которые заливалось ранее.Сначало надо очистить прежнее данные,и потом загрузить свежые данные.Вот и спрашиваю как мне написать..
Для меня слово рекотсет нечего не дает,т.к.только начинаю осваивать скул(вернее придется)
Имя базы и пользователь поменял из безопасности.Если можно опишите пожалуста как вы видите.Спасибо за отклик..
...
Рейтинг: 0 / 0
Удаление Старые Данных из таблицы в SQL Server2005
    #36865579
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bura_limon,

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

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

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

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

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

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

truncate table XXXXX
...
Рейтинг: 0 / 0
Удаление Старые Данных из таблицы в SQL Server2005
    #36868514
bura_limon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как то так вы имеете виду?
Здесь я чистю:
Пока Выборка.Следующий()Цикл
ТекстЗапросаУдаления="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
Удаление Старые Данных из таблицы в SQL Server2005
    #36868565
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bura_limon,

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

Итак,

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

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

Как ни крути, а первую запись цикла он терял. Да и глупо передавая данные через буферную таблицу с тригером, не удалять из неё (в этом же триггере) обработанную запись.
...
Рейтинг: 0 / 0
Удаление Старые Данных из таблицы в SQL Server2005
    #36869504
bura_limon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите,еще вот такая ошибка:
Ошибка: {Форма.Форма(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
Удаление Старые Данных из таблицы в SQL Server2005
    #36869546
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данных type или comment встречается ' .

Огласите весь 1Совский запрос.
...
Рейтинг: 0 / 0
Удаление Старые Данных из таблицы в SQL Server2005
    #36869579
bura_limon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВЫБРАТЬ
| ХозрасчетныйОбороты.Период КАК 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
Удаление Старые Данных из таблицы в SQL Server2005
    #36869586
bura_limon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запятая где то лишняя
...
Рейтинг: 0 / 0
Удаление Старые Данных из таблицы в SQL Server2005
    #36869625
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаблон запроса у вас правильный, запятая попадает из данных. Поставьте на эти поля замену ' на ".

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

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


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