Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите метод побыстрее / 25 сообщений из 160, страница 1 из 7
19.05.2010, 19:00
    #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
19.05.2010, 19:12
    #36637598
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
/topic/759003&hl=#8781417



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



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

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

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

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

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

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

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

ТЗ на этот код.
Внятное, подробное.
Мне лень заниматься реверс-инжинирингом.
...
Рейтинг: 0 / 0
19.05.2010, 20:28
    #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
19.05.2010, 20:31
    #36637757
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
На какой строке? (не на этих уж точно)
...
Рейтинг: 0 / 0
19.05.2010, 20:45
    #36637792
aduka05adm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
Shocker.ProНа какой строке? (не на этих уж точно)
не понял вопроса
...
Рейтинг: 0 / 0
19.05.2010, 20:46
    #36637794
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
Вы написали, что выходит ошибка. Но она возникает не на тех строках, которые вы привели, это точно.
...
Рейтинг: 0 / 0
19.05.2010, 20:51
    #36637804
aduka05adm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
Shocker.ProВы написали, что выходит ошибка. Но она возникает не на тех строках, которые вы привели, это точно.
...
Рейтинг: 0 / 0
19.05.2010, 20:52
    #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
19.05.2010, 20:55
    #36637807
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
Вы хотите вывести в грид результат выполнения команды INSERT???????
...
Рейтинг: 0 / 0
19.05.2010, 21:01
    #36637813
aduka05adm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
Shocker.Pro,
в грид необязательно , главное чтобы файлы объединились по полю KOD
...
Рейтинг: 0 / 0
19.05.2010, 21:04
    #36637825
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
aduka05admв грид необязательно
Тогда вот это что означает:
Код: plaintext
TDataLite1.Refresh


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

это я использую TrueDbGRID
вместе с ним идет TdataLite через него фильтровать лучше и ошибок меньше
...
Рейтинг: 0 / 0
19.05.2010, 21:09
    #36637830
aduka05adm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите метод побыстрее
Shocker.Pro,
Код: plaintext
Adodc1.Refresh
ошибка на этом этапе
...
Рейтинг: 0 / 0
19.05.2010, 21:14
    #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
19.05.2010, 21:18
    #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
19.05.2010, 21:22
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите метод побыстрее / 25 сообщений из 160, страница 1 из 7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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