| |
|
|
| | Есть несколько полей, названных a,b,c (их значения соответственно 2, 3, 1).
Есть 4-е (текстовое) поле, в котором введены данные (например a+b-с).
Необходимо в 5-м поле вывести то же выражение, но с данными (чтобы получилось 2+3-1)...
Народ, подскажите, как это реализовать...  | |
| |
| |
| |
|
|
| | Может как-то так, модуль формы:
Private Function funResultat(Formula As String)
Dim strLitera As String
Dim i As Integer
Dim strResultat As String
If Len(Formula) > 0 Then
For i = 1 To Len(Formula)
strLitera = Mid(Formula, i, 1)
If funIsField(strLitera) Then
strResultat = strResultat & Me.Controls(strLitera)
Else
strResultat = strResultat & strLitera
End If
Next i
funResultat = strResultat
Else
funResultat = vbNullString
End If
End Function
Private Function funIsField(strLitera As String) As Boolean
On Error Resume Next
funIsField = Not Me.Controls(strLitera) Is Nothing
End Function
Private Function funCalculation()
Dim strResultat As String
strResultat = funResultat(Nz(Me.Formula, vbNullString))
If Len(strResultat) > 0 Then
Me.Resultat = strResultat
Me.ResultatValue = Eval(strResultat)
End If
End Function
Private Sub a_AfterUpdate()
funCalculation
End Sub
Private Sub b_AfterUpdate()
funCalculation
End Sub
Private Sub c_AfterUpdate()
funCalculation
End Sub
Private Sub Formula_AfterUpdate()
funCalculation
End Sub
|
 | |
| |
| |
| |
|
|
| | Или запросом с функцией:
SELECT tbl1.ID, tbl1.a, tbl1.b, tbl1.c, tbl1.Formula, funResultat(tbl1.a, tbl1.b, tbl1.c, tbl1.Formula) AS Resultat
FROM tbl1;
Public Function funResultat(aValue, bValue, cValue, strFormula As String) As String
Dim strLitera As String
Dim i As Integer
Dim strResultat As String
If Len(strFormula) > 0 Then
For i = 1 To Len(strFormula)
strLitera = Mid(strFormula, i, 1)
Select Case strLitera
Case Is = "a"
strResultat = strResultat & aValue
Case Is = "b"
strResultat = strResultat & bValue
Case Is = "c"
strResultat = strResultat & cValue
Case Else
strResultat = strResultat & strLitera
End Select
Next i
funResultat = strResultat
Else
funResultat = vbNullString
End If
End Function
|
| |
| |
| |
| |
|
|
| | чтобы я без Вас делала!!!!!!!!!!!!!!!!!!!!!!!!!!!!! огромнейшее спасибо!!!!!! получилось!!!!!!!!!!!!!!!!  | |
| |
| |
| |
|
|
| | Если немного изменить функцию, она будет возвращать не строку, а результат выражения:
Public Function funResultat(aValue, bValue, cValue, strFormula As String)
Dim strLitera As String
Dim i As Integer
Dim strResultat As String
If Len(strFormula) > 0 Then
For i = 1 To Len(strFormula)
strLitera = Mid(strFormula, i, 1)
Select Case strLitera
Case Is = "a"
strResultat = strResultat & aValue
Case Is = "b"
strResultat = strResultat & bValue
Case Is = "c"
strResultat = strResultat & cValue
Case Else
strResultat = strResultat & strLitera
End Select
Next i
funResultat = Eval(strResultat)
Else
funResultat = 0
End If
End Function
|
Обрабатывает так-же скобки и возведение в степень. | |
| |
| |
|
|
| |
|
|
| | Всегда рады.  | |
| |
| |