v7: Самая длинная строка в таблице значений #580202


#0 by DCKiller
Имеется таблица значений, полученная в результате выполнения прямого запроса к некоторому справочнику, и содержащая значения всех реквизитов этого справочника (база SQL, так что строки неогр. длины тоже будут тут же). Вопрос: можно ли как-то среди этих самых строк в одной колонке определить самую длинную, без перебора строк ТЗ, или нет?
#1 by Ёпрст
можно. В самом прямом запросе.
#2 by SnarkHunter
Возможно.
#3 by DCKiller
что за функция?
#4 by DCKiller
+3 или скрипт на скуле ваять
#5 by Origin
в запросе, 2 источника, и сравнение строк по длине
#6 by Origin
таблицу саму с собой сравнивай
#7 by Ёпрст
LEN ( string_expression )
#8 by Ёпрст
+7 ну и + Max и привет.
#9 by SnarkHunter
Месье знает толк в извращениях...
#10 by DCKiller
, спс, нашел уже.
#11 by DCKiller
Почему ругается 'Argument data type text is invalid for argument 1 of len function'? Из-за того, что строка пустая?
#12 by skunk
Datalength
#13 by DCKiller
Неожиданно! Сэнкс...
#14 by Mikeware
открой для себя BOL
#16 by DCKiller
Открывал, там про эту функцию почему-то ни слова.
#17 by Ёпрст
ээхх..
#18 by trad
т.к. определить нужно не длину самой длинной строки, а саму строку, то нужно не max, а top 1 и order by
#19 by Ёпрст
Да ? хз, я понял как именно длину.. :( С тобой на бентли не насобираешь
#20 by DCKiller
Вообще-то нужно было узнать именно длину самой длинной строки :) Возможно, я в топике не совсем понятно выразился. Тем не менее, тоже спасибо за совет.
#21 by trad
вот так вот часто. один спрашивает не то что спросить хотел. другой отвечает не то что спрашивали. ... так и живем :(
#22 by trad
минус на минус = плюс
#23 by DCKiller
Теперь возник такой вопрос. И опять-таки про длину строк... В базе1 делается запрос к таблице _1SConst, результаты которого выгружаются в ТЗ. Затем производится прямое подключение к базе2, создается еще один объект типа ODBCRecordSet "Запрос1" для записи данных в нее. Идет создание и подготовка ВТ: Обе команды выполняются успешно, и в первом, и во втором случае Рез = 1. НО! Когда идет выполнение     Запрос1.ВыполнитьSQL_ИзТЗ(РезультатЗапроса); Вываливается ошибка "Усечение данных строки справа". Что за глюк?
#24 by Ёпрст
разве что номер строки имеет тип tinyint
#25 by Ёпрст
или smallint, не помню ужо
#26 by DCKiller
Думаешь, дело в нем? SQL 2000 этот тип понимает?
#27 by DCKiller
нет, tinyint
#28 by Ёпрст
и это, нафига тебе 2 запроса, когда надо всё делать в одном ! Без выгрузки ТЗ. Если че.
#29 by DCKiller
Даже если данные выбираются из одной базы, а записываются в другую?!
#30 by Ёпрст
ну да.
#31 by DCKiller
Ну покажи, как это в одном сделать. Или в запросах 1С++ есть что-то вроде восьмерочных пакетов?
#32 by Mikeware
Это стандартная возможность SQL.
#33 by DCKiller
Как он поймет, что таблица _1SConst, в которую производится запись - это таблица базы2, а не базы1, если все делаться будет одним запросом?
#34 by Ёпрст
:))) в тексте запроса укажешь имя базы схему и нужную табличку в ней.
#35 by DCKiller
Это как "[Database2].[dbo]._1SConst"? не?
#36 by Ёпрст
догадливый
#37 by DCKiller
:)))
#38 by DCKiller
И тогда проблема усечения строки отпадет?
#39 by Ёпрст
мот еще правда прилинковать сервак придется
#40 by Ёпрст
да
#41 by DCKiller
Сервер один и тот же
#42 by Ёпрст
тока лучше вообще DTS использовать
#43 by Ёпрст
тем проще.
#44 by DCKiller
Где почитать?
#45 by Ёпрст
#46 by DCKiller
Благодарю, посмотрим :)
#47 by DCKiller
А вот еще вопрос: как в файловой базе с помощью 1С++ таким же образом переносить данные? Многие SQL-фишки тут уже не прокатят, по типу тех, о которых шла сейчас речь. Или может, лучше будет АДО использовать?
#48 by Ёпрст
всё тоже самое, используешь фоксовый провайдер и привет.. Те же запросы к любым базам в 1 запросе. Те же updateinsert
#49 by DCKiller
ну там я так понял, диалект другой несколько?
#50 by Ёпрст
синтаксис немного другой. и всё.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С