powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как убрать кавычки с параметра в VBA
6 сообщений из 6, страница 1 из 1
как убрать кавычки с параметра в VBA
    #39617082
Anapurna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток

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

Имеется таблица фс текстами филтров 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
как убрать кавычки с параметра в VBA
    #39617109
4z4r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anapurna,
а в селект это условие разве не засовывается?
...
Рейтинг: 0 / 0
как убрать кавычки с параметра в VBA
    #39617111
Anapurna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да (смотрите картинку ниже)

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

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


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


...
Рейтинг: 0 / 0
как убрать кавычки с параметра в VBA
    #39617323
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
как убрать кавычки с параметра в VBA
    #39617622
Kakha Tsartsidze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий
Спасибо за помощь
всё получилось
...
Рейтинг: 0 / 0
как убрать кавычки с параметра в VBA
    #39617673
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
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как убрать кавычки с параметра в VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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