Не считаются строки в модуле Access Help!!!!!!!!!!!!!!!!!!!!

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Dyul
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 02.08.2005 (Вт) 17:24

Не считаются строки в модуле Access Help!!!!!!!!!!!!!!!!!!!!

Сообщение Dyul » 02.08.2005 (Вт) 17:34

Берутся строки из одной таблицы, подсчитываются и заносяться в другую!
Не заносятся! :cry: То ли, по строкам не переходят, то ли я не там exit поставила! :(

Public Function yceet()

Dim dbs As Database
Dim M, R, B, OT, i, D As Integer
Dim DN, NV, SPD As String

Dim tbltabel, ycet As Recordset
Dim fld As Field

'Текущая БД
Set dbs = CurrentDb
M = InputBox("ВВЕДИТЕ УЧЕТНЫЙ МЕСЯЦ")
DN = InputBox("ВВЕДИТЕ УЧЕТНЫЙ ДЕНЬ")
'MsgBox ("d" & DN)
DoCmd.RunSQL "DELETE DISTINCTROW [УЧЕТ].* FROM [УЧЕТ];"
B = 0
R = 0
OT = 0
Set tbltabel = dbs.OpenRecordset("SELECT * FROM [ТАБЕЛЬ] WHERE MEC =" & M)
tbltabel.MoveLast 'Заполнение массива
tbltabel.MoveFirst
Set ycet = dbs.OpenRecordset("УЧЕТ", dbOpenTable)
For i = 1 To tbltabel.RecordCount
For Each fld In tbltabel.Fields
If fld.Name = "D" & DN Then
NV = tbltabel!NV
SPD = tbltabel!SPD

If IsNumeric(fld.Value) = 0 Or fld.Value = "МО" Then
R = R + 1
ElseIf fld.Value = "Б" Or fld.Value = "Р" Then
B = B + 1
ElseIf fld.Value = "ОТ" Or fld.Value = "ОД" Or fld.Value = "УД" Or fld.Value = "ОЧ" Or fld.Value = "ОЖ" Or fld.Value = "В" Then
OT = OT + 1
End If

End If
Exit For
Next fld

tbltabel.MoveNext

Next i

ycet.AddNew
ycet!MEC = M
ycet!DAAY = DN
ycet!NV = tbltabel!NV
ycet!SPD = tbltabel!SPD
ycet!RAB = R
ycet!bol = B
ycet!OT = OT
ycet.Update


End Function

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 03.08.2005 (Ср) 7:26

Глянул на код - вроде все пучком, единственное замечание: структура базы (как я понял) корявая, судя по этой строчке If fld.Name = "D" & DN Then для каждого учетного дня создается отдельно поле. А это крайне неэффективно.

Совет: выполни свои запросы прямо в Access-е, посмотри что возвращается - мож там голяк?
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Не считаются строки в модуле Access Help!!!!!!!!!!!!!!!!

Сообщение alibek » 03.08.2005 (Ср) 8:29

Dyul писал(а):Dim dbs As Database
Dim M, R, B, OT, i, D As Integer
Dim DN, NV, SPD As String

Неправильно.
Ну и куча других ошибок.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 03.08.2005 (Ср) 8:39

Неправильно.
Ну и куча других ошибок.


Подскажи, alibek, чем не правильно-то? Просто интересно...
А куча других ошибок - эт ты про что?
А я все практикую лечение травами...

Dyul
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 02.08.2005 (Вт) 17:24

Сообщение Dyul » 03.08.2005 (Ср) 9:23

В таблице пусто!
Я делала пошаговый запуск, вроде бегает по строкам, после
tbltabel.MoveNext
выходит из цикла, делает
ycet.AddNew
ycet!MEC = M
ycet!DAAY = DN
ycet!NV = tbltabel!NV
ycet!SPD = tbltabel!SPD
ycet!RAB = R
ycet!bol = B
ycet!OT = OT
ycet.Update

и все!
Может я переменные не правильно описала?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.08.2005 (Ср) 9:43

1. Неправильное объявление. В данном случае правильно объявлены только последние переменные, все остальные -- Variant.
2. По записям БД не проходят циклом FOR...NEXT. Надо использовать Do Until recordset.EOF...Loop. Выход из цикла скорее всего из-за того, что RecordCount неправильный.
Ну и остальное по мелочи.
Lasciate ogni speranza, voi ch'entrate.

Dyul
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 02.08.2005 (Вт) 17:24

Сообщение Dyul » 03.08.2005 (Ср) 10:13

Если можно, про мелочи тоже,Пожалуйста!!!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.08.2005 (Ср) 10:44

Если честно, лень искать :)
Попробую.

Объявлять dbs совсем не обязательно, вполне можно использовать CurrentDb.

SQL-запросы я бы делал не через DoCmd, а через CurrentDb.Execute.

Зачем делать MoveLast/MoveFirst?
Во-первых, можно просто открыть рекордсет как dbOpenTable и присвоить фильтр. Во-вторых, можно открыть как Dynaset.

Зачем вообще нужен RecordCount?
Обычно он нужен, чтобы отображать прогресс выполнения какой-нибудь процедуры, а в данном случае он не нужен вообще.

Зачем для каждой записи перебирать все поля?
Номер дня у тебя не меняется, можно один раз найти нужное тебе поле (его индекс), а в цикле обращаться к полю по индексу.

Ты присваиваешь ycet!NV = tbltabel!NV. Но к этому времени tbltabel может быть вообще не спозиционировано. Данное место -- потенциальный баг, причем весьма вероятный.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 03.08.2005 (Ср) 10:50

Ну alibek глубоко копнул, ни чего не скажешь... Я так глубоко и не вдовался...
А я все практикую лечение травами...

Dyul
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 02.08.2005 (Вт) 17:24

Сообщение Dyul » 04.08.2005 (Чт) 15:12

Что-то разбор ошибок меня наводит на мысль, что нужно почитать, что-то для "Чайников" :oops: !
Может что-нибудь посоветуете?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 04.08.2005 (Чт) 15:17

Книга называется "Разработка баз данных на Visual Basic"
Автора, если мне не изменяет память, зовут Джеффри МакНус...
А я все практикую лечение травами...

Dyul
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 02.08.2005 (Вт) 17:24

Сообщение Dyul » 04.08.2005 (Чт) 15:40

О!Есть такая! :lol: На полке стояла! :?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 04.08.2005 (Чт) 15:42

Зелено-белая? Значит она. Книженка супер, сказать больше нечего... :lol:
А я все практикую лечение травами...

Dyul
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 02.08.2005 (Вт) 17:24

Сообщение Dyul » 04.08.2005 (Чт) 15:58

У меня три тома по 6 Вижл!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 04.08.2005 (Чт) 16:01

У меня три тома по 6 Вижл!

Пылятся небось? :wink:
А я все практикую лечение травами...

Dyul
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 02.08.2005 (Вт) 17:24

Сообщение Dyul » 04.08.2005 (Чт) 16:07

Кто-то брал почитать, а потом вернули, а я и не заметила! :oops:
что-то с модулями у меня не очень получается, с SQL как-то проще почему-то!Даже обидно!Ступор какой-то!


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 1

    TopList