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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Функция
 
 автор: Гоблин   (14.02.2010 в 17:57)   личное сообщение
28 Кб.
 
 

Всем привет.
Давненько не брался за Access. Возникла проблема откуда не ждали. Суть:
Есть 2 таблицы. Одна справочная, другая для вычислений. Раньше было все просто. В табле для вычислений выбирался параметр (данные из справочной таблы) и в 3 числовых поля вводились данные (пусть будет ширина, длина, высота). Встроенный в форму запрос считал по определенной формуле результат и все были довольны. ОДНАКО
Теперь решили, что каждый параметр может считаться по разным формулам. В них могут меняться коэффициенты и прочее. Типа если раньше было [Ширина]+[Высота], то теперь может быть [Ширина]-[Высота]*[Длина]+[Высота]/2
Короче проблема в том, что бы пользователь в справочной табле мог сам задавать формулу, по которой потом этот параметр будет считаться. Калькулятор и эксель не предлагать. Забивать формулу не проблема. Проблема ее потом заставить работать в нужной строке в ленточной форме.

Если у меня в некоем поле [Формула] стоит такое чудо: [Ширина]+[Высота]-[Длина]/3 как мне ее преобразовать к числовому значению в поле результат. Запрос на обновление в числовое поле пихает саму эту строку. А надо преобразовать, что бы считал. Функция на преобразование? Кто чего посоветует?

  Ответить  
 
 автор: Explorer   (14.02.2010 в 18:58)   личное сообщение
 
 


Кто чего посоветует?


это довольно простая задача :) помнится лет сто назад в функции вычисления объема я перепута знак... недели полторы искал ошибку...


[Ширина]-[Высота]*[Длина]+[Высота]/2



как думаешь - что за результат ты получишь вычисляя значение по этой формуле?

(ш-(в*д))+(в/2) - просто фантасмогорично... это наверное круче чем сферический конь в вакууме

  Ответить  
 
 автор: Гоблин   (14.02.2010 в 19:32)   личное сообщение
 
 

Да пофиг какая формула. Вот так заказчик заказал. Какая формула когда и на какой параметр будет он и сам не знает. Как эту штуку из текста заставить работать в цифрах в ленточной форме. Поначалу показалось просто. Потом дошел до запроса на обновление по критерию параметр, но в результат вставляет строку формулы, а не число. Знаю, что проблема с кавычками и операторами. Код надо в VBA
me.Результат=...
Вижу что просто, а опять чего-то не втягиваю.

  Ответить  
 
 автор: Explorer   (14.02.2010 в 19:38)   личное сообщение
 
 


Да пофиг какая формула.



порядок вычисления выражений не пофиг...
но мне-то пофиг, конечно

  Ответить  
 
 автор: Lukas   (14.02.2010 в 19:59)   личное сообщение
 
 

И мне ... И мне пофиг.

Гоблин, Eval попробуйте.

  Ответить  
 
 автор: Гоблин   (14.02.2010 в 20:18)   личное сообщение
 
 

Во блин. Это что? Надеюсь что поможет. Тут главное что бы в каждой строке ленточной формы вычисления по разным формулам были. Задача блин.
Лукас, спасибо. Попробую разобраться.

  Ответить  
 
 автор: час   (14.02.2010 в 21:21)   личное сообщение
23 Кб.
 
 

Вот вспомнил у мну чё та было такое
посмотри мож сгодится?
Мне тогда весь форум помогал.........

  Ответить  
 
 автор: Гоблин   (15.02.2010 в 23:00)   личное сообщение
 
 

Вещь однако! Спасибо. Тут на форуме нашел одну интересную штуку. Lukas для lurix делал. Примерно то, то мне надо. Но у меня что-то не работает. Надо видеть как применить.
http://hiprog.com/forum/read.php?id_forum=1&id_theme=4152&page=1
Твой вроде тоже интересен. И даже очень.

  Ответить  
 
 автор: Lukas   (15.02.2010 в 23:29)   личное сообщение
10 Кб.
 
 

Вот пример: =>
Я там второй вариант функции добавил.

  Ответить  
 
 автор: Гоблин   (16.02.2010 в 19:12)   личное сообщение
 
 

Ну спасибо. Вот уж не ожидал такого изобилия ответов. И какой из них круче?
Бум дум.
Спасибо все. Но чую, что вопросы не кончились.

  Ответить  
 
 автор: Гоблин   (22.02.2010 в 11:27)   личное сообщение
 
 

Все отлично. Работает. Выбрал первый вариант, хотя второй похоже проще. Теперь новый вопрос. Функцию пришлось слегка модифицировать, так как показывала #ошибку# если данных нет. Null.
Теперь новый вопрос. Параметр и формула находятся в таблице-справочнике. В рабочей таблице выбирается с поля со списком параметр, который при подстановке цифр вычисляется в поле Итог. Работает только с целыми числами. При подстановке 8,4 зависает, глючит, выпадает в осадок. В функции используется тип переменных value. Стало быть виновно не это. А что тогда? Работать приходится в основном не с целыми числами. Плиз пояснить.
Функция выглядит так:
Public Function funResultat(L, H, W, Формула As String) As Double
Dim strLitera As String
Dim i As Integer
Dim strResultat As String

If Len(Формула) > 0 Then
For i = 1 To Len(Формула)
strLitera = Mid(Формула, i, 1)

Select Case strLitera
Case Is = "L"
strResultat = strResultat & Nz(L, 0)
Case Is = "H"
strResultat = strResultat & Nz(H, 0)
Case Is = "W"
strResultat = strResultat & Nz(W, 0)
Case Else
strResultat = strResultat & strLitera
End Select
Next i
funResultat = Eval(strResultat)
Else

funResultat = 0
End If
End Function
Менял Double на Float не работает вообще.

  Ответить  
 
 автор: Lukas   (22.02.2010 в 15:25)   личное сообщение
 
 


В рабочей таблице выбирается с поля со списком параметр...


Вероятно, числовое значение представляется строкой.
Попробуй в функции добавить еще один Case

Case Is = ","
strResultat = strResultat & "."

  Ответить  
 
 автор: Гоблин   (22.02.2010 в 15:59)   личное сообщение
15 Кб.
 
 

Увы не помогает. Тут тип переменных указывать надо. Пробовал в функции указать, не получается. Вот ваш пример. Работает только с целыми числами. Ошибка 2432. Может внедрить функцию преобразования из текста в числовое?
Или вообще другой алгоритм. (Но для меня это трудно в данном случае)

  Ответить  
 
 автор: Lukas   (22.02.2010 в 17:03)   личное сообщение
21 Кб.
 
 

Посмотри так:

  Ответить  
 
 автор: Гоблин   (22.02.2010 в 18:45)   личное сообщение
 
 

Lukas, вы гений? Да. Как до такого дойти можно?

А вообще есть ли такие вопросы в Access, которые бы поставили вас в тупик?

Круто Я сам бы не допер.

Спасибо.

  Ответить  
 
 автор: Lukas   (22.02.2010 в 18:51)   личное сообщение
 
 

Ну, я далеко не гений, я только учусь.
Вопросов, которые ставят в тупик море, например такой:


Напишите, пожалуйста, для чайников поэтапно, что надо нажать и куда вставить.


  Ответить  
 
 автор: Гоблин   (22.02.2010 в 19:36)   личное сообщение
 
 

Это типа руководство по использованию программы? Мутное это дело, согласен.

  Ответить  
 
 автор: час   (22.02.2010 в 20:12)   личное сообщение
 
 

Напишите, пожалуйста, для чайников поэтапно, что надо нажать и куда вставить.

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

Блин, как это для меня нормально. Примерно такие вопросы задают чуть ли ни каждый день. Ничего такого не вижу в этом.

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

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