|
|
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
Я загружаю данные из 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='"+Конрагент.ИНН+"'";"; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2010, 16:35 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
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 я смотрю имя базы и пользователь поменялось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2010, 17:15 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
Stix у нас в компании несколько СУБД(собственные разработки),и мы тащим из 1с всякую хрень туда,в данном случаи при загрузки мне не нужно старые данные которые заливалось ранее.Сначало надо очистить прежнее данные,и потом загрузить свежые данные.Вот и спрашиваю как мне написать.. Для меня слово рекотсет нечего не дает,т.к.только начинаю осваивать скул(вернее придется) Имя базы и пользователь поменял из безопасности.Если можно опишите пожалуста как вы видите.Спасибо за отклик.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2010, 18:05 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
bura_limon, Что является критерием старости данных и что Ваас не устраивает в собственном коде? ЗЫ Вынести очистку из цикла не помещает - понятнее будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2010, 18:39 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
AHDP Пример можно?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 10:56 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
понедельник день тяжелый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 13:08 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
ну или как то так: Команда.CommandText="INSERT INTO dbo.io_agent_debt VALUES ( ? ,? ,? ,? ,? ,? ')"; Команда.Prepare=True; Команда.Parameters.Refresh(); ValueTable=Выборка.Unload(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 13:51 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
bura_limon, У Вас в неком цикле (предположительно по данным, которые вы хотите вставить) авторПока Выборка.Следующий()Цикл 1) удаление записи на первом проходе => вы теряеете при вставке первую запись; 2) вставка в таблицу записей начиная со второй (первую вы уже потеряли). Выполните очистку таблицы ДО цикла вставки данных. ЗЫ А пятница была легче? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 15:17 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
AHDP ну вот об этом я и хочу у вас спрасить,как мне сделать до Цикла очистить Таблицу.написшети примерик какой нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 16:35 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. примерно так, примеров в инете достаточно много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 17:15 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
Stix все таки новой процедурой надо писать,и это удаления всей таблицы,а как можно просто очисть?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 17:18 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
очистка так по моему:TRUNCATE TABLE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 17:18 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
bura_limonStix все таки новой процедурой надо писать,и это удаления всей таблицы,а как можно просто очисть?! в чем проблема? как угодно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 17:24 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
bura_limonStix а как можно просто очисть?! запрос очищающий все в таблице сразу, вместо delete truncate table XXXXX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 17:27 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
Вот как то так вы имеете виду? Здесь я чистю: Пока Выборка.Следующий()Цикл ТекстЗапросаУдаления="TRUNCATE TABLE dbo.io_agent_debt VALUES('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"'," +Выборка.Конрагент+",'" +Выборка.ИНН+"," +Выборка.КПП+"," +Строка(Формат(Выборка.Сумма, "ЧДЦ=2; ЧРД=.; ЧГ"))+",'" +Выборка.Док+"')" ; Команда.CommandText=ТекстЗапросаУдаления; Команда.Execute(); и следом создаю новую запись?: Пока Выборка.Следующий()Цикл ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ('"+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+"'," +Выборка.Конрагент+",'" +Выборка.ИНН+"," +Выборка.КПП+"," +Строка(Формат(Выборка.Сумма, "ЧДЦ=2; ЧРД=.; ЧГ"))+",'" +Выборка.Док+"')" ; Команда.CommandText=ТекстЗапроса; Команда.Execute(); КонецЦикла; Попытка НаборЗаписей.Close(); исключение Сообщить("Ошибка: " + ОписаниеОшибки()); КонецПопытки; КонецЦикла; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 17:49 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
bura_limon, Вы, к сожалению, не понимаете алгоритма обмена данными между вашими системами. Или что-то не договариваете. Или не дочитали определение DELETE. Итак, 1) Вы по расписанию (запросу) передали некоторые данные (вызвав внутри цикла н-ное количество инсертов); 2) другое приложение обработало весь набор записей (а не обрабатывало их тригерами по мере того, как вы их туда вставляете); 3) Вы удаляете весь набор ранее переданных записей (DELETE) - очищаете таблицу; 4) переходите к шагу №1. Итого: У вас одна команда DELETE для удаления старых записей и в цикле вставка новых данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 18:01 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
AHDP так понятно,спасибо,ну наверное завтра уже.........поздо 20-00 у нас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2010, 18:03 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
судя по начальному коду вообще непонятно, что ТС хочет - в чистую таблицу писать, или подчищать и обновлять в таблице только данные по выборке отдельных контрагентов, стоит наверное логику на бумаге написать, бесполезно помогать, если ТС выдирает куски кем-то написанного кода для других задач и мешает все в одну кучу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2010, 09:24 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
Stix, Как ни крути, а первую запись цикла он терял. Да и глупо передавая данные через буферную таблицу с тригером, не удалять из неё (в этом же триггере) обработанную запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2010, 10:20 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
подскажите,еще вот такая ошибка: Ошибка: {Форма.Форма(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 не присваивает,то есть колонка пустая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2010, 11:27 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
В данных type или comment встречается ' . Огласите весь 1Совский запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2010, 11:39 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
ВЫБРАТЬ | ХозрасчетныйОбороты.Период КАК 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"; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2010, 11:51 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
запятая где то лишняя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2010, 11:53 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
Шаблон запроса у вас правильный, запятая попадает из данных. Поставьте на эти поля замену ' на ". В регистре есть? В каждом из подзапросов (ОБЪЕДЕНИТЬ <> ОБЪЕДЕНИТЬ ВСЕ)? Есть ошибка при добавлении записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2010, 12:06 |
|
||
|
Удаление Старые Данных из таблицы в SQL Server2005
|
|||
|---|---|---|---|
|
#18+
Поставьте на эти поля замену ' на " ТекстЗапроса="INSERT INTO dbo.io_agent_debt VALUES ("+Формат(ВыборкаРез.Dt,"ДФ=""ММ/дд/гггг""")+""," +ВыборкаРез.type+","" +ВыборкаРез.Agent_name+""," +ВыборкаРез.inn+"," +ВыборкаРез.kpp+"," +Строка(Формат(ВыборкаРез.amount, "ЧДЦ=2; ЧРД=.; ЧГ=0"))+","" +ВыборкаРез.comment+"")" ; здесь вылезает ошибка Ожидается ключевое слово 'Исключение' ('Except'),или я что то не понял,и запятые не туда вставил. Не совсем понятен вопрос :В регистре есть? В каждом из подзапросов (ОБЪЕДЕНИТЬ <> ОБЪЕДЕНИТЬ ВСЕ)? Есть ошибка при добавлении записи? Я так понимаю какая то не совместимость символов между 1с и SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2010, 12:32 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36865361&tid=1521989]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
172ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 499ms |

| 0 / 0 |
