powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA Access Строковая переменная в .Rename
7 сообщений из 7, страница 1 из 1
VBA Access Строковая переменная в .Rename
    #39492175
Ataxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток
Пишу процедурку разделения таблицы

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Sub SC2(tblname)
Dim tbls()
Dim it As Integer
Dim k As String
Dim dc As Long
Dim j As Long

dc = DCount("*", "Таблица")
it = dc \ 50000
ReDim tbls(0 To it)
   For j = 1 To it
   CurrentDb.Execute "CREATE TABLE [Таблица(" & j & ")] ([cod] INT, [ob] VARCHAR, [ind] FLOAT)"
   CurrentDb.Execute "INSERT INTO [Таблица(" & j & ")] SELECT TOP 50000 * FROM Таблица"
   CurrentDb.Execute "DELETE FROM (SELECT TOP 50000 * FROM Таблица)"
   Next j
   
   If DCount("*", "Таблица") > 0 Then
   k = CStr(it + 1)
   DoCmd.Rename "Таблица(k)", acTable, "Таблица"
   End If
   MsgBox "Парам-парам-ПАМ!"
End Sub


Хочу, чтобы после завершения цикла исходная таблица переименовалась в Имя(колличество итераций + 1), если в ней остаются записи. Возможно ли это сделать командой .Rename (или только создать-вставить-удалить запросами)? Если да, то как прописать переменную k в команде?
...
Рейтинг: 0 / 0
VBA Access Строковая переменная в .Rename
    #39492191
Вероятно так же, как и в запросах:
DoCmd.Rename "Таблица(" & k & ")", acTable, "Таблица"

Может объясните, зачем вам такое разделение?

Кстати, вместо CREATE TABLE и INSERT INTO можно выполнить один запрос SELECT...INTO..., если, конечно, вы не меняете тип полей.
...
Рейтинг: 0 / 0
VBA Access Строковая переменная в .Rename
    #39492201
Ataxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторDoCmd.Rename "Таблица(" & k & ")", acTable, "Таблица"
Действительно, сработало. Спасибо.
авторМожет объясните, зачем вам такое разделение?
В дальнейшем экспортируется в xls. Если строк больше чем может вместить лист, то бьётся на 2 части и портается на разные листы.
авторвместо CREATE TABLE и INSERT INTO можно выполнить один запрос SELECT...INTO...
Таблицы создадутся автоматически?
...
Рейтинг: 0 / 0
VBA Access Строковая переменная в .Rename
    #39492265
AtaxyВ дальнейшем экспортируется в xls. Если строк больше чем может вместить лист, то бьётся на 2 части и портается на разные листы. Если грузить в xls методом CopyFromRecordset, то можно обойтись без такого гемора. Этот метод имеет аргумент, где указывается кол-во записей. Если указать 50000, столько будет и загружено. Следующий такой вызов на другом листе загрузит следующие 50000 и т.д.. Если записей только 100, то только они и будут загружены.
Кстати, в xls ограничение строк - 65500 с хвостиком.
...
Рейтинг: 0 / 0
VBA Access Строковая переменная в .Rename
    #39492963
Ataxy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсли грузить в xls методом CopyFromRecordset, то можно обойтись без такого гемора. Этот метод имеет аргумент, где указывается кол-во записей. Если указать 50000, столько будет и загружено. Следующий такой вызов на другом листе загрузит следующие 50000 и т.д.. Если записей только 100, то только они и будут загружены.
А пример такого зверя, какого вы описали, на этом форуме существует?
авторКстати, в xls ограничение строк - 65500 с хвостиком.
В данном случае не принципиально использовать полный объём листа на максимум
...
Рейтинг: 0 / 0
VBA Access Строковая переменная в .Rename
    #39492998
AtaxyА пример такого зверя, какого вы описали, на этом форуме существует?
Примеров с CopyFromRecordset в избытке, а вот с загрузкой порциями - надо поискать. Я сам когда-то давно выкладывал.
Допустим, есть файл с листами "Лист1","Лист2","Лист3",... На листах в 1-й строке уже есть заголовки столбцов. Файл уже открыт и присвоен переменной WB. DAO Recordset на таблице уже открыт в переменной RS и он не пустой. Далее примерно так (писал на коленке):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim rng As Variant, i As Long
 RS.MoveLast: RS.MoveFirst
 i = 0 
Do While (RS.AbsulutePosition + 1) < RS.RecordCount
 i = i + 1
 Set rng = WB.WorkSheets("Лист" & i).Range("A2")
 rng.CopyFromRecordset RS, 50000
Loop
...
Рейтинг: 0 / 0
VBA Access Строковая переменная в .Rename
    #39493224
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )Примеров с CopyFromRecordset в избытке, а вот с загрузкой порциями - надо поискать. Я сам когда-то давно выкладывал.

Я как-то упражнялся на эту тему - 19069928 .
Case 3 - вставка данных массивом определенными порциями(постранично).

Но CopyFromRecordset по скорости все равно круче. Раза в два быстрее. Безусловный лидер.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA Access Строковая переменная в .Rename
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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