powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / .12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
18 сообщений из 18, страница 1 из 1
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096266
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер.
Никогда не юзал ACCESS, а тут пришлось.
Суть в следующем из нескольких таблиц надо вытащить 2 стринговых поля

(с этим все ясно) и одно числовое

это я добиваюсь
Expr1: [Table1].[name]+Trim(Str([age]))+[surname]

Единственная загвоздка в следующем. Если число начинается на 0
то оно представляется в виде, к примеру .23456
так вот надо проверить первый символ, если он равен точке то точку надо заменить на 0
.23456 = 023456
Такое возможно или нет???
Спасибо
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096267
-=Alexey=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.со строками лучше вместо + использовать &
2.result = iif(mid(str,1,1)=".",CDbl("0" & str),0) что то типа того
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096278
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не совсем понял

Я в Аксесе 0

Что я делаю
1. Иду по закладке Query
2. Там я сделал новый квери
3. Щелкаю на field правой кнопкой и выбираю Build
4. Появляется Expression builder

там мне хотя бы написать что выбираю поле [age] и проверяю первый символ

написав как посоветовали ниче не вышло. Сообщения неккоректности.

result=iif(mid(str[age],1,1)=".",CDbl("0" & str[age]),0)

или это где-то в другом месте писать надо. или где то select писать надо???
мне этот синтаксис ваще не понятен ;-((
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096280
-=Alexey=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тут неудачно имя переменной для примера выбрал - str
скажем имя поля у вас x, в поле запроса пишите x1: IIf(Mid([x],1,1)=".",CDbl("0" & [x]),0) делает следущее, если первый символ точка то добавляет в начало ноль и преобразует к типу double, иначе возвращает 0

я в базе Борей в таблицу Типы добавил текстовое поле - х. запрос такой вышел SELECT Типы.*, IIf(Mid([x],1,1)=".",CDbl("0" & [x]),0) AS x1
FROM Типы;
исходные данные (поле х)
.76
.23
xxx
90

результат

0.76
0.23
0
0
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096359
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я наверно дятел, но я не понял чего куда мы добавляем.


..в поле запроса пишите x1: IIf(Mid([x],1,1)=".",CDbl("0" & [x]),0)
с этим вроде все ясно

а вот

я в базе Борей в таблицу Типы добавил текстовое поле - х. запрос такой вышел SELECT Типы.*, IIf(Mid([x],1,1)=".",CDbl("0" & [x]),0) AS x1
FROM Типы;

в какую таблицу Типы??? и как именно там добавить???
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096360
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня к примеру есть база "Тест" и там 1 таблица "Проба"

name text
surname text
age Number
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096401
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Expr1: [Table1].[name]+Выражение1: IIf(Left$(CStr([age]); 1 )= "." ; "0 " & Mid$(CStr([age]); 2 );CStr([age]))+[surname] 


Но, честно говоря, такой геморрой...
Возможно, есть дополнительные условия, которые могли бы все упростить?
Например, точка может встречаться только в начале и ее всегда надо заменять на 0 (при условии Access 2000)?
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096459
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точка может быть и не вначале, но только первая интересует, если она есть то в 0, нет тогда без изменений

Access 2000

Если не секрет, что написать вместо "выражение1". я вообще в этот синтаксис не врубаюсь. ;-(((
Хелп у меня не проинстален, а диска нет доинсталить, даже прочесть негде.
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32096645
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry, error...

Код: plaintext
Expr1: [Table1].[name] & IIf(Left$(CStr([age]); 1 )= "." ; "0 " & Mid$(CStr([age]); 2 );CStr([age])) & [surname]
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32097077
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Енто пошло. только не совсем правильно
Если первый символ точка, то точка должна заменяться на 0, а не прибавлять 0 к началу.
А так прикольно, даже чего то зарулило.
Спасибо.
Если вдруг есть время скажите как организовать с заменой.
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32097809
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если нужно взять крайние правые четыре цифры, не равные 0, но если при продвижении влево встречается точка или зяпятая, её нужно игнорировать?
Это может упростить задачу?
Заранее спасибо.
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32098061
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, должно работать как заказывали ;0)
Времени проверить сейчас нет.
А дополнительные условия могут только усложнить задачу.
Но нет ничего невозможного, только придется использовать функцию VBA
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32098270
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"0" - замена на другой символ все равно ставит в начало 0, а не заменяет "."
???
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32098355
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот проверка через VBA:

Код: plaintext
1.
2.
3.
4.
Sub CheckIt()
Dim age As String
age =  ".12321 "
MsgBox IIf(Left$(CStr(age),  1 ) =  "." ,  "0 " & Mid$(CStr(age),  2 ), CStr(age))
End Sub


Создайте модуль, вставьте туда этот текст и запустите процедуру на выполнение.
Результат должен быть 012321
У меня все ОК
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32098540
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. разобрался где писать и что.
если в VBA написать то работает.
А можно как-то в запросе вызывать функцию CheckIt?
А то подставить то я подставил, но он при запуске запроса параметр требует.
Чего напишешь, то он и подставляет вместо точки.

Насколько я понимаю немного ф-цию переделать надо на параметрическую, но как?
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32099170
Alex Juice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выражение1:MyFunction([MyField])
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32099923
Andrew Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо. Со всем разобрался...
но после Делфей висуал бейсик - это полный.....
...
Рейтинг: 0 / 0
.12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
    #32099954
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Васисуал бейсик я бы рассматривал не в отрыве от остального, что с ним взаимодействует (формы и пр.).
А вообще-то в запросе должно было работать и без функции...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / .12345 if firstsymbol = '.' then = 0+12345 Возможно ли?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]