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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Посмотрите че не так access 2003
 
 автор: angel_026   (08.09.2009 в 17:42)   личное сообщение
 
 

Dim pst As myrecA
Private Sub Кнопка_Click()
If CurrentProject.AllForms(Форма2).IsLoaded = False Then
With pst
.ПолеА = Me.ПолеА
.ПолеБ = Me.ПолеБ
.ПолеВ = Me.ПолеВ
End With
DoCmd.OpenForm "Форма2", acNormal
With Forms("Форма2")
.Controls("ПолеX") = Me!ПолеА
.Controls("ПолеZ") = Me!ПолеБ
.Controls("ПолеY") = Me!ПолеВ
End With
'Если поставить здесь END то в форму2 занесутся нужные данные в нужные поля нужной записи
'А вот далее, и есть проблемма, как при нажатии Кнопка_Click, добавить следующие данные в нужные поля, а не в новую запись(в форме2 1-ой записи присвоенно порядка 150 полей)
End If
If CurrentProject.AllForms(Форма2).IsLoaded = True Then
doCmd.GoToRecord , "Форм2", acGoTo
With Forms("Форма")
.Controls("ПолеX1") = Me!ПолеА
.Controls("ПолеZ1") = Me!ПолеБ
.Controls("ПолеY1") = Me!ПолеВ
End With
End Sub
'В таком варианте, в открывщейся форме2 в поля добавляется сразу две записи, а при клике на кнопку второе поле меняет данные правильно, а хотел чтобы при открытии формы2 в поля добавлялось только первое значение, а при дальнейших кликах добавлялись в др. поля, но не в записи. ВОТ же задачка

  Ответить  
 
 автор: Анатолий (Киев)   (08.09.2009 в 18:12)   личное сообщение
 
 

angel_026, что-то я растерялся.
То у вас не получается добавить новую запись, то наоборот...
Используйте две кнопки "Добавить запись" и "Дополнить запись"
В форме2 измените имена полей на ПолеX1-ПолеX50 и т.п., а часть кода на "Дополнить запись" такая:

...
With Forms("Форма2")
 For i = 1 To 50 
   If IsNull(.Controls("ПолеX" & i)) And  IsNull(.Controls("ПолеZ" & i)) And IsNull(.Controls("ПолеY" & i)) Then
    .Controls("ПолеX" & i) = Me!ПолеА
    .Controls("ПолеZ" & i) = Me!ПолеБ
    .Controls("ПолеY" & i) = Me!ПолеВ
     Exit Sub
   End If
 Next
End With
  MsgBox "Нет свободных полей!" 


Дополнено: А что это вы такое мудрите? 150 полей!!!

Дополнено2: angel_026, учитесь правильно формулировать вопросы, применять терминологию, понятную остальным и не создавайте лишние ветки на одну тему (сейчас их уже три).

  Ответить  
 
 автор: angel_026   (08.09.2009 в 19:48)   личное сообщение
 
 

СПС, за разъяснение, трудно быть чайником
Так, я по мере творения кода и выяснял, что именно и как и куда и зачем вставить
Сорри, за три ветки одинакого по сути вопроса, да простят меня админы
А 150 полей это клиентский заказ, вот так: запись 1 имеет 20 полей (Артикул), 20 полей (Цена) и т.д. У меня в базе клиентский заказ может содержать 20 наименований, поэтому и полей столько

  Ответить  
 
 автор: osmor   (08.09.2009 в 18:21)   личное сообщение
 
 

Рассказываю по строчно ЧТО вы делаете

Dim pst As myrecA 'ну это видимо структура которую где-то выше описали
Private Sub Кнопка_Click()
'проверяем открыта ли форма Форма2 (причем видимо нужно в кавычки заключить "Форма2" - иначе это переменная
If CurrentProject.AllForms(Форма2).IsLoaded = False Then
'если форма не открыта заполняем структуру данными из текущей формы
  With pst
     .ПолеА = Me.ПолеА
     .ПолеБ = Me.ПолеБ
     .ПолеВ = Me.ПолеВ
  End With
  ' открываем форму2
  DoCmd.OpenForm "Форма2", acNormal
  ' в форме2 заполняем поля ПЕРВОЙ ЗАПИСИ  значениями полей из текущей записи текущей формы
  With Forms("Форма2")
     .Controls("ПолеX") = Me!ПолеА
     .Controls("ПолеZ") = Me!ПолеБ
     .Controls("ПолеY") = Me!ПолеВ
  End With
End If
' проверяем открыта ли форма Форма2 это условие ВСЕГДА ИСТИНА, т.к. если форма была не открыта, то вы ее открыли см. выше
If CurrentProject.AllForms(Форма2).IsLoaded = True Then
' переходим на какую-то запись в форме2 (здесь видимо опечатка (Форм2 вместо Форма2
     doCmd.GoToRecord , "Форм2", acGoTo 

' в какой-то форме с именем "Форма"  (неизвестно открытой или нет) заполняем поля текущей записи (неизвестно какой) значениями полей из текущей записи текущей формы
  With Forms("Форма")
   .Controls("ПолеX1") = Me!ПолеА
   .Controls("ПолеZ1") = Me!ПолеБ
   .Controls("ПолеY1") = Me!ПолеВ
  End With
End Sub


Вы полагаете из этого можно понять что вы хотите сделать?

  Ответить  
 
 автор: Анатолий (Киев)   (08.09.2009 в 18:35)   личное сообщение
 
 

Еще добавлю, что структура заполняется, но дальше нигде не используется.
А в строке If CurrentProject.AllForms(Форма2).IsLoaded = True Then имя формы без кавычек. И это работает?
angel_026, у вас в заголовках модулей присутствует строка Option Explicit? Похоже, что НЕТ.

  Ответить  
 
 автор: angel_026   (08.09.2009 в 20:06)   личное сообщение
 
 

Да у меня кодировщика нет, когда я копирую свой код в форум появляется всякая белеберда, вот поэтому ручками и дописываю, бывают ляпы,
Народ, Вы не злитесь на меня, повторяю, что я ЧАЙНИК и не притендую на звание магистра ACCESSа, просто мне набо сделать базу, что с букварем не получается, спрашиваю у ВАС, за ВАШИ ответы и комменты ОООООООЧЧЧЧЧЧЧЕЕЕЕЕЕЕЕННННННННННЬЬЬЬЬЬЬЬЬ благодарю

  Ответить  
 
 автор: Анатолий (Киев)   (09.09.2009 в 11:19)   личное сообщение
 
 


когда я копирую свой код в форум появляется всякая белеберда


Чтобы кирилица переносилась правильно - копируйте код при включенной русской раскладке.

И вы не описали свой задачу. То, что вы делаете, противоречит основным принципам БД. Возможно есть более правильное решение.

  Ответить  
 
 автор: angel_026   (08.09.2009 в 23:10)   личное сообщение
 
 

СПС, ВАМ Анатолий (Киев), за решение моей траблы
Все заработало, причем на УРААААААААА
Респект ВАМ и уважуха, чувствуется рука мастера

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