Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как убрать кавычки с параметра в VBA / 6 сообщений из 6, страница 1 из 1
19.03.2018, 21:38
    #39617082
Anapurna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как убрать кавычки с параметра в VBA
Доброе время суток

Суть проблемы таково

Имеется таблица фс текстами филтров TeamFilters
оно применяется для подсчйта колисество записей подходяший по заданному филтру

на пример одно из них такое
(rstCR![Last6HomeAll] > rstCR!Last6HomeH) And (rstCR!OponentDogerforHbyAll + rstCR!OponentDogerforH) >= 4 And rstCR!LeaguePosAwayAllStatus <> 1

проблема в том что когда берёт через VBAT то оно там в кавичках и CountofPrediction запихивет неправильно и выдёт количество записей в запросе AllPredictsForForms

как можно решить это проблему
можеть кто имел подобную проблему и может посоветовать



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Public Sub Scenario(VBAT As String, CountofPrediction As Integer)
  On Error Resume Next
Dim rstCR As DAO.Recordset

Set rstCR = CurrentDb.OpenRecordset("SELECT *  FROM AllPredictsForForms")
rstCR.MoveLast
rstCR.MoveFirst
Numberofrecords = rstCR.RecordCount

J = 1
Do While Not rstCR.EOF
   If VBAT Then CCC = CCC + 1
   'If (rstCR![Last6HomeAll] > rstCR!Last6HomeH) And (rstCR!OponentDogerforHbyAll + rstCR!OponentDogerforH) >= 4 And rstCR!LeaguePosAwayAllStatus <> 1 Then CCC = CCC + 1
     CountofPrediction = CCC
  rstCR.MoveNext
    J = J + 1
    
Loop
rstCR.Close
Set rstCR = Nothing

End Sub




Public Function ScenarioCalculate()
    'On Error Resume Next
Dim CountofPrediction As Integer, VBAT As String

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("select VBAFiltertext from TeamFilters")

rst.MoveLast
rst.MoveFirst
n = rst.RecordCount

i = 1
Do While Not rst.EOF
    Call Scenario(rst.Fields(0), CountofPrediction)
     CurrentDb.Execute "update TeamFilters set CountOfPredict=" & CountofPrediction & "   where VBAFiltertext=" & Chr(34) & rst.Fields(0) & Chr(34) & ";"
    rst.MoveNext
    i = i + 1
Loop

rst.Close
Set rst = Nothing
End Function
...
Рейтинг: 0 / 0
19.03.2018, 23:04
    #39617109
4z4r
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как убрать кавычки с параметра в VBA
Anapurna,
а в селект это условие разве не засовывается?
...
Рейтинг: 0 / 0
19.03.2018, 23:18
    #39617111
Anapurna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как убрать кавычки с параметра в VBA
да (смотрите картинку ниже)

If VBAT Then CCC = CCC + 1
тут то она имеется но с кавичками

"(rstCR!Last6HomeAll > rstCR!Last6HomeH) And (rstCR!OponentDogerforHbyAll + rstCR!OponentDogerforH) >= 4 And rstCR!LeaguePosAwayAllStatus <> 1"


но без ковичек это выражение выдает точное значение для каждого выражения филтра от таблицы TeamFilters


...
Рейтинг: 0 / 0
20.03.2018, 11:05
    #39617323
как убрать кавычки с параметра в VBA
Anapurna, у вас непонимание ситуации на базовом уровне.
Код: vbnet
1.
If VBAT Then CCC = CCC + 1

Здесь вы проверяете содержимое строковой переменной на пустая/не пустаяю
Код: vbnet
1.
If (rstCR![Last6HomeAll] > rstCR!Last6HomeH) And (rstCR!OponentDogerforHbyAll + rstCR!OponentDogerforH) >= 4 And rstCR!LeaguePosAwayAllStatus <> 1 Then CCC = CCC + 1

А здесь вы вставили выражение непосредственно в тело процедуры. Поэтому работает правильно.

Если из выражение в VBAT убрать все rstCR! , то его можно подставить в условие запроса и сразу получить кол-во записей. Т.е.
Код: sql
1.
Set rstCR = CurrentDb.OpenRecordset("SELECT *  FROM AllPredictsForForms WHERE " & VBAT)


Или получить все записи, а затем использовать выражение в методах поиска (FindFirst, FindNext)

rstCR! для начала убрать в процедуре функцией Replace, а если все получится, то и в таблице.
...
Рейтинг: 0 / 0
20.03.2018, 15:24
    #39617622
Kakha Tsartsidze
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как убрать кавычки с параметра в VBA
Анатолий
Спасибо за помощь
всё получилось
...
Рейтинг: 0 / 0
20.03.2018, 16:27
    #39617673
как убрать кавычки с параметра в VBA
Kakha Tsartsidze = Anapurna ?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
i = 1
Do While Not rst.EOF
    Call Scenario(rst.Fields(0), CountofPrediction)
     CurrentDb.Execute "update TeamFilters set CountOfPredict=" & CountofPrediction & "   where VBAFiltertext=" & Chr(34) & rst.Fields(0) & Chr(34) & ";"
    rst.MoveNext
    i = i + 1
Loop

Объясните, зачем вы выполняете запрос на обновление, если вы и так находитесь на нужной записи Recordset-а, которую надо отредактировать? Достаточно этого:
Код: vbnet
1.
2.
3.
rst.Edit
rst!CountOfPredict = CountofPrediction
rst.Update


И еще, какое назначение переменной i ?

И вот это лишнее в функции ScenarioCalculate:
Код: vbnet
1.
2.
3.
rst.MoveLast
rst.MoveFirst
n = rst.RecordCount
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как убрать кавычки с параметра в VBA / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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