powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите метод побыстрее
10 сообщений из 160, страница 7 из 7
Подскажите метод побыстрее
    #36646295
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему внешний цикл вы хотите выполнить именно ДВА раза? откуда эта цифра в алгоритме?
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646310
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
я его такое количеcтво раз хочу сделать чему равно nom, чтобы в нижнюю переменную с listbox внести данные.
строки при внутреннем цикле заносятся в listbox. только вот с этим nom не допру как сделать
Код: plaintext
1.
2.
3.
strtxt2 = List1.List(i)
strselect = strselect + strunion + "SELECT KOD, NAME" + Replace(strsql3, "0 AS " + strtxt2, "KOLVO AS " + strtxt2) + _
" FROM " + strtxt2 + ".DBF "
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646341
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
если делать так то работает , но не понимаю почему
Код: plaintext
1.
2.
3.
4.
5.
6.
For i =  0  To nom +  6 
Do Until EOF( 1 )
Line Input # 1 , strtxt
If PathFileExists("C:\ostatok2\" + strtxt + ".DBF") =  1  Then
If fl <  1  Then
nom = nom +  1 
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646415
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый алгоритм у вас делал два прохода по таблице имен файлов, в этот раз вы уже хотите наворотить несколько проходов, непонятно зачем....
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646427
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПервый алгоритм у вас делал два прохода по таблице имен файлов, в этот раз вы уже хотите наворотить несколько проходов, непонятно зачем....
в первом алгоритме в строке
Код: plaintext
1.
2.
strtxt2 = List1.List(i)
strselect = strselect + strunion + "SELECT KOD, NAME" + Replace(strsql3, "0 AS " + strtxt2, "KOLVO AS " + strtxt2) + _
" FROM " + strtxt2 + ".DBF "
он брал первую строку и все
так вот переменная nom увеличивается во внутреннем цикле
Код: plaintext
 nom=nom+ 1 
только видимо в конструкции
Код: plaintext
For i =  0  To nom
в переменной nom должно быть постоянное значение
а не динамичное
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646437
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, свой алгоритм примерно обрисую.

Есть некая переменная (в вашем случае strselect), в которой мы формируем своеобразный "квадрат". По горизонтали мы наращиваем список полей через запятую, а по вертикали - склеиваем эти самые горизонатльные строки через union all.

Сейчас мы это делаем в двух последовательных циклах. В первом цикле "отращиваем" квадрат вправо, во втором - вниз. Хочется сделать в одном цикле, как? Отращивание квадрата вниз у нас вопроса не вызывает, там просто идет добавление в конец переменной, а как одновременно отращивать его вправо? Ведь первый раз должна отращиваться одна строка, во второй - две строки, в третий - три и т.п.

Помогут маркеры и функция Replace. Нам нужно выбрать в качестве маркера какой-нибудь текст, который точно не встретится ни в запросе, ни в названии файлов. Пусть это будет "%". Разместим его в концах наращиваемых вправо строк и будем наращивать за счет этого маркера, просто заменяя его на то, чем мы наращиваем строки.

Пример, в какой-то момент строка квадрата (часть переменной) выглядит так:
Код: plaintext
1.
2.
3.
SELECT KOD, NAME, KOLVO AS DSH,  0  AS ALIEVA, 0  AS SKLAD, 0  AS SOVET%
UNION ALL
SELECT KOD, NAME,  0  AS DSH, KOLVO AS ALIEVA, 0  AS SKLAD, 0  AS SOVET%
...
Проделываем
Код: plaintext
Replace(strselect,"%",",0 AS KALIN18%")
получаем
Код: plaintext
1.
2.
3.
SELECT KOD, NAME, KOLVO AS DSH,  0  AS ALIEVA, 0  AS SKLAD, 0  AS SOVET, 0  AS KALIN18%
UNION ALL
SELECT KOD, NAME,  0  AS DSH, KOLVO AS ALIEVA, 0  AS SKLAD, 0  AS SOVET, 0  AS KALIN18%
...

То бишь одной просто командой мы прирастили вправо все четыре строки.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646491
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
а как же тогда с этим куском кода
Код: plaintext
 Replace(strsql3, "0 AS " + strtxt, "KOLVO AS " + strtxt)
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646495
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
4.
5.
6.
strsql3 = strsql3 + ",0 AS " + strtxt + "%"
strselect = Replace(strselect, "%", ",0 AS " + strtxt)
strselect = strselect + strunion + " SELECT KOD, NAME" + Replace(strsql3, "0 AS " + strtxt, "KOLVO AS " + strtxt) + _
" FROM " + strtxt + ".DBF "
strunion = " Union All "
MsgBox (strselect)
сделал так не работает , буду думать завтра)
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646711
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
а как же тогда с этим куском кода
Код: plaintext
 Replace(strsql3, "0 AS " + strtxt, "KOLVO AS " + strtxt)


а он не нужен теперь
нужная строка формируется сразу
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36646713
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
Код: plaintext
1.
2.
3.
4.
5.
6.
strsql3 = strsql3 + ",0 AS " + strtxt + "%"
strselect = Replace(strselect, "%", ",0 AS " + strtxt)
strselect = strselect + strunion + " SELECT KOD, NAME" + Replace(strsql3, "0 AS " + strtxt, "KOLVO AS " + strtxt) + _
" FROM " + strtxt + ".DBF "
strunion = " Union All "
MsgBox (strselect)
сделал так не работает , буду думать завтра)

процентик потеряли во второй строке
...
Рейтинг: 0 / 0
10 сообщений из 160, страница 7 из 7
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите метод побыстрее
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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