MS Access i VB [
2 отговора
124 прегледа
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
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
Re: MS Access i VB [
Ако правилно съм разбрала, какво искаш да направиш - използвай update query, което да се изпълнява при on load na формата
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. Тогава процедурата ще се изпълнява за текущия запис и за всеки , който става текущ. Този код, който ти давам ще свърши работа за тази цел.
Но си помисли по-добре за структурата на цялата база.
Успех.
Не съм наясно какво искаш да направиш, но имам чуството, че пътят по който си тръгнал е погрешен. Обикновенно това, което искаш да направиш
се постига още при създаването на релациите, дефинирането на таблиците и създаването на 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. Тогава процедурата ще се изпълнява за текущия запис и за всеки , който става текущ. Този код, който ти давам ще свърши работа за тази цел.
Но си помисли по-добре за структурата на цялата база.
Успех.