MS Access i VB [

2 отговора 124 прегледа
#1

MS Access i VB [

Zdraveite na vischki.
Imam edna form-a v Microsoft Access v koiato imam dve bounded text boxes koito sadargat tri-bukveni kodove za razlichni mashinni chasti.Ednata text box se naricha [type] a drugata se naricha [dia type].Iskam ako koda v [type] e ili "EBW" ili "Sub Arc",avtomatichno da popalnia "ARC" v [dia type]. Kogato probvam s prosto
If statement,kodat mi raboti samo za parviat record.Opitah s array da loop-na prez vsichki records,no poluchavam greshka.Eto kodat mi po-dolu,ako razbrahte neshto ot moite gluposti,pishete :)

Private Sub Form_Load()
Dim i As Integer

For i = 1 To 134
[type].SetFocus
If InStr([type].text, "EBW") Then
Me![dia type].Visible = True
Me![dia type].Enabled = True
Me![dia type] = "ARC"
ElseIf InStr([type].text, "Sub Arc") Then
Me![dia type].Visible = True
Me![dia type].Enabled = True
Me![dia type] = "ARC"
Else
Me![dia type].Enabled = False
Me![dia type].Visible = False
End If
Next

End Sub

Отговор
в отговор на American_boy #2

Re: MS Access i VB [

Ако правилно съм разбрала, какво искаш да направиш - използвай update query, което да се изпълнява при on load na формата

Отговор
в отговор на American_boy #3

Re: MS Access i VB [

Здрасти.
Не съм наясно какво искаш да направиш, но имам чуството, че пътят по който си тръгнал е погрешен. Обикновенно това, което искаш да направиш
се постига още при създаването на релациите, дефинирането на таблиците и създаването на query-та. Но все пак.
Доколкото разбирам dia type е разрешено и видимо само когато в type е написано EBW или Sub Arc. Но ако става въпрос само за тези две
стойности, за какво го разрешаваш (dia type)? Нека да е видимо, но не тярбва да се допуска редактирането му? Ако предположението ми е вярно

тогава напиши код за събитието type_BeforeUpdate !!

Private Sub type_BeforeUpdate(Cancel As Integer)
If [type].Text = "EBW" or [type].Text = "Sub Arc" Then
Me![dia type].Visible = True
Me![dia type] = "ARC"
Else
Me![dia type] = "" ' - Остава празно.
Me![dia type].Enabled = False
Me![dia type].Visible = False
End If
End Sub

'В този случай трябва да има обработка и на Form_Current().

Private Sub Form_Current()
If [type].Value = "EBW" or [type].Value = "Sub Arc" Then
Me![dia type].Visible = True
Me![dia type] = "ARC"
Else
Me![dia type].Enabled = False
Me![dia type].Visible = False
End If
End Sub

'***
Процедурата, която си написал в OnLoad няма да свърши работа. Цикълът се завърта само за първия запис и то 134 пъти!!, а не за всичките, както ти
се иска. Затова трябва да поставиш кода в OnCurrent. Тогава процедурата ще се изпълнява за текущия запис и за всеки , който става текущ. Този код, който ти давам ще свърши работа за тази цел.
Но си помисли по-добре за структурата на цялата база.

Успех.

Отговор