Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вложенный цикл в MS 2003
 
 автор: ial52   (03.05.2010 в 21:44)   личное сообщение
 
 

Что-то заклинило...
Две таблицы: AktTabelle и AktBtn. Количество строк различное и никаких общих совпадений.
Задача: Встать на первые строки в обоих таблицах и прочесть значения из одного из полей в каждой таблице, после чего перейти на следующую строку в обоих таблицах. И так до тех пор, пока в первой таблице не дойдем до конца, после чего таблицы закрыть.
В чем ошибка????

With AktBtn
.MoveFirst
Do While Not .EOF
ArtStr = !ARTNR

AktTabelle.MoveFirst
Do While Not AktBtn.EOF
AktNr = AktBtn!SchaltflaecheNr
MsgBox AktNr & " " & ArtStr
AktTabelle.MoveNext
Loop

MsgBox ArtStr & " " & AktNr
.MoveNext
Loop
.Close
AktTabelle.Close
End With

  Ответить  
 
 автор: час   (03.05.2010 в 22:01)   личное сообщение
 
 

получается пока внутренний цикл не отработает к внешнему не вернёмся и так много раз......
нужно всё в одном цикле делать, тока каждый раз переходить на новую запись во второй таблице - AktTabelle.MoveNext
================================

  Ответить  
 
 автор: ial52   (03.05.2010 в 22:09)   личное сообщение
 
 

Один цикл и есть, но одна таблица движется, а вторая стоит на первой строке вмертвую. Где напртачил-не пойму. Весь код всего-то несколько строк... Просто чертовщина какая-то...

  Ответить  
 
 автор: ial52   (03.05.2010 в 22:10)   личное сообщение
 
 

В модуле и стоит AktTabelle.MoveNext, я просто здесь забыл поставить

  Ответить  
 
 автор: час   (03.05.2010 в 22:18)   личное сообщение
 
 

Два цикла-два
один в теле другого


Do While Not .EOF
ArtStr = !ARTNR

AktTabelle.MoveFirst

Do While Not AktBtn.EOF
AktTabelle.MoveNext
Loop

.MoveNext
Loop

  Ответить  
 
 автор: ial52   (03.05.2010 в 22:20)   личное сообщение
 
 

А у меня вот
Do While Not .EOF
ArtStr = !ARTNR

AktTabelle.MoveFirst
Do While Not AktBtn.EOF
AktNr = AktBtn!SchaltflaecheNr
MsgBox AktNr & " " & ArtStr
AktTabelle.MoveNext
Loop

MsgBox ArtStr & " " & AktNr
.MoveNext

  Ответить  
 
 автор: час   (03.05.2010 в 22:21)   личное сообщение
 
 

Это я твой код, только урезаный показываю - присмотрись
цикл в цикле

  Ответить  
 
 автор: час   (03.05.2010 в 22:24)   личное сообщение
 
 

И вот ещё

AktTabelle.MoveFirst


Ты сам просиш - каждый раз вставать на первую запись

  Ответить  
 
 автор: час   (03.05.2010 в 22:25)   личное сообщение
 
 

Сделай для начала один цикл - по одной своей таблице
Када всё нормально заработает.....посмотришь, а что же дальше

  Ответить  
 
 автор: час   (03.05.2010 в 22:31)   личное сообщение
 
 


AktTabelle.MoveFirst
With AktBtn
.MoveFirst
for f=1 to .recordcount-1
if  .EOF= false then
  ArtStr = !ARTNR
тут надо будет сбегать в другую таблицу но там без цикла по таблице 
  MsgBox .ArtStr & " " & AktTabelle.AktNr
   AktTabelle.MoveNext
  .MoveNext
end if
next f
.Close

End With



положил бы ты таблицы сюда, а то как то не наглядно

  Ответить  
 
 автор: ial52   (03.05.2010 в 22:40)   личное сообщение
 
 

И как сбегать без цикла. Я опять становлюсь на первую строку и стою там до опупения

  Ответить  
 
 автор: ial52   (03.05.2010 в 22:45)   личное сообщение
 
 

Спасибо, ошибку понял-все получилось!

  Ответить  
 
 автор: час   (03.05.2010 в 22:46)   личное сообщение
 
 

А я тама внизу наяриваю пишу............

  Ответить  
 
 автор: ial52   (03.05.2010 в 22:29)   личное сообщение
 
 

По этому коду движение происходит только по второй таблице, а первая, зараза, намертво стоит на первой строке.
Я таких циклов уже миллион раз писал, а сейчас переклинило. Видимо долго не занимался-был полутарогодовой перерыв, а сейчас жена потребовала помочь ей...

With AktBtn
.MoveFirst
Do While Not .EOF
ArtStr = !SchaltflaecheNr

AktTabelle.MoveFirst
Do While Not AktTabelle.EOF
AktNr = AktTabelle!artnr
MsgBox AktNr & " " & ArtStr
AktTabelle.MoveNext
Loop

MsgBox ArtStr & " " & AktNr
.MoveNext
Loop
End With

  Ответить  
 
 автор: час   (03.05.2010 в 22:43)   личное сообщение
 
 


AktTabelle.MoveFirst
AktBtn.MoveFirst

for f=1 to .recordcount-1
  if  AktBtn.EOF= false then
  
   MsgBox AktBtn!ARTNR & " " & AktTabelle!AktNr

    AktTabelle.MoveNext
    AktBtn.MoveNext
  end if
next f
AktBtn.Close
AktTabelle.Close

  Ответить  
 
 автор: osmor   (04.05.2010 в 08:26)   личное сообщение
 
 

а если записи во второй таблице кончатся раньше?
Я не вижу в этой задаче вложенных циклов, виджу 2 параллельных.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList