powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите метод побыстрее
25 сообщений из 160, страница 1 из 7
Подскажите метод побыстрее
    #36637579
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
If PathFileExists("C:\ostatok2\dsh.DBF") =  1  Then
 Adodc2.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=C:\ostatok2\;DefaultDir =      C:\ostatok2\"
 Adodc2.CommandType = adCmdText
 Adodc2.RecordSource = "SELECT * FROM dsh.DBF"
 Set TDataLite2.DataSource = Adodc2
 Adodc2.Refresh
 TDataLite2.Refresh
 ad1 = Me.Adodc1.Recordset.RecordCount
 ad2 = Me.Adodc2.Recordset.RecordCount
 nom =  0 
  For i =  0  To ad2
  Me.Adodc1.Recordset.MoveFirst
  If Me.Adodc2.Recordset.EOF = False Then

  namefilt1 = Me.Adodc1.Recordset("KOD").Value
  namefilt1name = Me.Adodc1.Recordset("NAME").Value
  namefilt1name2 = Me.Adodc2.Recordset("NAME").Value
  namefilt2 = Me.Adodc2.Recordset("KOD").Value
  namefilt1kol2 = Me.Adodc2.Recordset("KOLVO").Value
  Me.Adodc1.Recordset.Find "KOD =" + namefilt2
   If Adodc1.Recordset.EOF Then
   Me.Adodc1.Recordset.AddNew
   Me.Adodc1.Recordset!KOD = namefilt2
   Me.Adodc1.Recordset!Name = namefilt1name2
   Me.Adodc1.Recordset!DSH = namefilt1kol2
   'Me.Adodc1.Recordset.Update
   nom = nom +  1 
   Else
   Me.Adodc1.Recordset("DSH").Value = namefilt1kol2
   'Me.Adodc1.Recordset.Update
   nom = nom +  1 
   End If
 
  End If
 Me.Adodc2.Recordset.MoveNext
 Next i
Adodc1.Refresh
TDataLite1.Refresh
mes2 = MsgBox(mes1, vbOKOnly)
End If
Если ли метод побыстрее , а то у меня файлов(dbf) где то 20 штук , очень долго получается
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637598
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/759003&hl=#8781417



все-таки теперь хотите быстрый?
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637607
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro/topic/759003&hl=#8781417



все-таки теперь хотите быстрый?

для той программы тот метод был в самый раз , а здесь он ну слишком долгий)))
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637613
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
здесь задача такая,выгружаются остатки с 20 филиалов, нужно их в один файл(dbf) загнать,
в каждом файле около 5000 строк, а в той программе всего 1000 строк и всего 2 файла)))))
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637643
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
здесь задача такая,выгружаются остатки с 20 филиалов, нужно их в один файл(dbf) загнать,
в каждом файле около 5000 строк, а в той программе всего 1000 строк и всего 2 файла)))))

Ну можно сделать с помощью метода двух курсоров, это ускорит обработку на один-два порядка.

Но все же я вам опять рекомендую делать запрос из двух файлов вместо того, чтобы лопатить это на клиенте. Как сделать запрос из таблиц, находящихся в разных файлах в dBase - я не знаю.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637653
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
а если через INSERT(sql) делать с условием Where?
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637662
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admа если через INSERT(sql) делать с условием Where?

Делать ЧТО?
У вас данные в разных базах.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637670
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
вставить данные из dsh.dbf в ostatok.dbf (where ostatok.KOD=DSH.KOD)
я просто не совсем понимаю как это работает поэтому спрашиваю,
я пробовал так но у меня вместо объединения по коду , записи добавлялись
в конце файла , то есть вся таблица вставлялась заново , хотя записи с таким кодом уже были
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637681
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так.
Мне это напоминает старый одесский прикол - подходите к человеку на улице и спрашиваете:
"Простите, вы мне не подскажете, правильно ли я иду?"

Так и вы. Опубликовали какой-то код, теперь рассказываете, что он как-то не так работает. А откуда мы знаем, как правильно он должен работать???

Пишите ТЗ для начала. Если ТЗ будет понятно, будем смотреть код.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637696
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
код то работает , я просто спрашивал метод побыстрее
а это спросил для консультации , зная что вы можете помочь
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637702
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

ТЗ на этот код.
Внятное, подробное.
Мне лень заниматься реверс-инжинирингом.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637750
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
Adodc1.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=C:\ostatok2\;DefaultDir = C:\ostatok2\"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "INSERT INTO ostatok(KOD,NAME,DSH) SELECT dsh.KOD,dsh.NAME,dsh.KOLVO " + _
"FROM dsh where ostatok.KOD=dsh.KOD"
так вот в чем проблема ? выходит ошибка "Слишком мало параметров требуется один"
если условие
Код: plaintext
where ostatok.KOD=dsh.KOD
не ставить то естественно он просто
добавляет записи в конец таблицы
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637757
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На какой строке? (не на этих уж точно)
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637792
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНа какой строке? (не на этих уж точно)
не понял вопроса
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637794
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы написали, что выходит ошибка. Но она возникает не на тех строках, которые вы привели, это точно.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637804
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВы написали, что выходит ошибка. Но она возникает не на тех строках, которые вы привели, это точно.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637806
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
On Error GoTo ado1
If PathFileExists("C:\ostatok2\dsh.DBF") =  1  Then

 Adodc1.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=C:\ostatok2\;DefaultDir = C:\ostatok2\"
 Adodc1.CommandType = adCmdText
 Adodc1.RecordSource = "INSERT INTO ostatok(KOD,NAME,DSH) SELECT dsh.KOD,dsh.NAME,dsh.KOLVO " + _
 "FROM dsh where ostatok.KOD=dsh.KOD"
 Set TDataLite2.DataSource = Adodc2
 Adodc1.Refresh
 TDataLite1.Refresh
End If
больше в процедуре нет кода
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637807
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы хотите вывести в грид результат выполнения команды INSERT???????
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637813
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
в грид необязательно , главное чтобы файлы объединились по полю KOD
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637825
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admв грид необязательно
Тогда вот это что означает:
Код: plaintext
TDataLite1.Refresh


И еще, чтобы выяснить, на какой строке ошибка, уберите обработчик (On Error), при возникновении ошибки нажмите кнопку Debug.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637829
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
авторTDataLite1.Refresh

это я использую TrueDbGRID
вместе с ним идет TdataLite через него фильтровать лучше и ошибок меньше
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637830
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
Adodc1.Refresh
ошибка на этом этапе
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637838
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

Код: plaintext
1.
2.
3.
4.
5.
Dim Conn As New ADODB.Connection
Conn.Open "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=C:\ostatok2\;DefaultDir = C:\ostatok2\"
Conn.Execute "INSERT INTO ostatok(KOD,NAME,DSH) SELECT dsh.KOD,dsh.NAME,dsh.KOLVO " + _
 "FROM dsh where ostatok.KOD=dsh.KOD"
Conn.Close
Set Conn = Nothing


И не морочьте голову селёдкеADODC-у, TrueDbGRID-у и TdataLite-у.
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637842
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
Conn.Execute "INSERT INTO ostatok(KOD,NAME,DSH) SELECT dsh.KOD,dsh.NAME,dsh.KOLVO " + _
 "FROM dsh where ostatok.KOD=dsh.KOD"
на этом этапе ошибка
...
Рейтинг: 0 / 0
Подскажите метод побыстрее
    #36637847
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
Код: plaintext
1.
Conn.Execute "INSERT INTO ostatok(KOD,NAME,DSH) SELECT dsh.KOD,dsh.NAME,dsh.KOLVO " + _
 "FROM dsh where ostatok.KOD=dsh.KOD"
на этом этапе ошибка

Ок.
Стало быть, запрос неправильно написан с точки зрения dBase (хотя вроде обычный SQL, где тут ошибаться...)
Возможно ostatok или dsh - это не таблица, а параметрическое представление, поэтому и требует себе какой-то параметр, но структуру вашей базы я не знаю, да и в dBase, как уже говорил, ни бумбум
...
Рейтинг: 0 / 0
25 сообщений из 160, страница 1 из 7
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите метод побыстрее
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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