powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / изменение типа данных в запросе
10 сообщений из 10, страница 1 из 1
изменение типа данных в запросе
    #39387248
blackbuster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть проблемы:
при нажатии кнопки запускается процедура, которая
1. Создает таблицу:
Код: vbnet
1.
CurrentDb.Execute "create table TO_Select (smena_id Int, TO_id Int, place_id int, ved_N char (20))"


2. Определяет переменные (привожу только нужную):
Код: vbnet
1.
2.
3.
    
Dim d As String
d = frm.Year & "-" & frm.Month & "-" & frm.Day1 & "-" & frm.Day2 & "-__" 'Должно иметь вид, например 2017-01-19-19-__


3. Вставляю переменные в таблицу:
Код: vbnet
1.
CurrentDb.Execute "INSERT INTO TO_Select (smena_id, to_id, place_id, ved_N) values (" & a & ",  " & b & ",  " & c & ", " & d & ")"


при выполнении процедуры вылетает ошибка (в приложении)
если переменную задать в виде
Код: vbnet
1.
d = frm.Year & "-" & frm.Month & "-" & frm.Day1 & frm.Day2


то запрос срабатывает, но в таблицу попадает математический результат вычисления 2017-01-19-19, то есть 1978, хотя везде указано, что это поле должно быть текстовым.
Где я что-то упустил?
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387259
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blackbuster,
не срабатывает даже в части d = frm.Year
откуда берутся данные для формирования строки?
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387261
blackbuster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tarasios,

из свободных полей другой формы. из них в той форме генерируется поле Smena_N (тип - текстовый), которое также пытался указать в запросе:
Код: vbnet
1.
d = Forms("smena_edit").Controls("Smena_N").Value & "-__"
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387263
blackbuster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tarasiosblackbuster,
не срабатывает даже в части d = frm.Year


поля Year, Month, Day1 и Day2 подтягиваются корректно, как было видно во вложении, но вся конструкция воспринимается как формула, поэтому на добавку "-__" система ругается
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387264
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blackbuster,

насколько я понял, надо играться с кол-вом кавычек по обе стороны от символа минуса.
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387267
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blackbuster,

Может, одновременно и создавать таблицу, и включать в нее запись?
Код: sql
1.
2.
3.
4.
5.
6.
7.
CurrentDb.Execute "SELECT TOP 1 " & _
                   a & " AS smena_id, " & _
                   b & " AS TO_id, " & _
                   c & " AS place_id, " & _
                   """" & frm.Year & "-" & frm.Month & "-" & frm.Day1 & "-" & frm.Day2 & "-__"" AS ved_N " & _
                   "INTO TO_Select " & _
                   "FROM MSysObjects"
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387284
blackbuster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

одну запись вставляет корректно, а дальше ругается, что таблица TO_Select уже есть..
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387286
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blackbuster__Michelle,

одну запись вставляет корректно, а дальше ругается, что таблица TO_Select уже есть..Правильно.
Если нужно вставлять записи в уже существующую таблицу, то
Код: vbnet
1.
2.
3.
CurrentDb.Execute "INSERT INTO TO_Select (smena_id, TO_id, place_id, ved_N) " & _
                  "VALUES (" & a & ", " & b & ", " & c & ",""" & _
                  frm.Year & "-" & frm.Month & "-" & frm.Day1 & "-" & frm.Day2 & "-__"")"
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387288
blackbuster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

вставил создание и удаление таблицы в цикл и все заработало корректно:
Код: 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.
Dim a, b, c, s, Kol, kolzap, frm
kolzap = DMax("to_id", "to") + 1
For I = 1 To kolzap
    a = Nz(Forms("smena_edit").Controls("Smena_ID").Value, 0)
    b = Nz(DLookup("to_id", "to", "to_select = true and to_id = " & I), 0)
    c = Nz(Forms("to_select").Controls("place_id").Value, 0)
    Set frm = Forms!smena_edit
    If a <> 0 And b <> 0 Then
        Kol = DLookup("kol", "to", "to_id = " & b)
        s = DLookup("to_shifr", "to", "to_id = " & b)
        For N = 1 To Kol
            If c <> 0 Then
                CurrentDb.Execute "create table TO_Select (smena_id Int, TO_id Int, place_id int, ved_N char (20))"
                CurrentDb.Execute "INSERT INTO TO_Select (smena_id, TO_id, place_id, ved_N) " & _
                "VALUES (" & a & ", " & b & ", " & c & ",""" & _
                s & "-" & frm.Year & "-" & frm.Month & "-" & frm.Day1 & "-" & frm.Day2 & "-__"")"
            Else
                CurrentDb.Execute "SELECT " & _
                a & " AS smena_id, " & _
                b & " AS TO_id, " & _
                """" & frm.Year & "-" & frm.Month & "-" & frm.Day1 & "-" & frm.Day2 & "-__"" AS ved_N " & _
                "INTO TO_Select " & _
                "FROM MSysObjects"
            End If
        CurrentDb.Execute "INSERT INTO ved select * from to_select "
        CurrentDb.Execute "drop table TO_Select"
        Next
End If
Next


Спасибо за помощь!
...
Рейтинг: 0 / 0
изменение типа данных в запросе
    #39387289
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо этого
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
            If c <> 0 Then
                CurrentDb.Execute "create table TO_Select (smena_id Int, TO_id Int, place_id int, ved_N char (20))"
                CurrentDb.Execute "INSERT INTO TO_Select (smena_id, TO_id, place_id, ved_N) " & _
                "VALUES (" & a & ", " & b & ", " & c & ",""" & _
                s & "-" & frm.Year & "-" & frm.Month & "-" & frm.Day1 & "-" & frm.Day2 & "-__"")"
            Else
                CurrentDb.Execute "SELECT " & _ ' тут Вы почему-то выбросили TOP 1, это неправильно!
                a & " AS smena_id, " & _
                b & " AS TO_id, " & _
                """" & frm.Year & "-" & frm.Month & "-" & frm.Day1 & "-" & frm.Day2 & "-__"" AS ved_N " & _
                "INTO TO_Select " & _
                "FROM MSysObjects"
            End If

лучше это
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
                CurrentDb.Execute "SELECT TOP 1 " & _ 
                a & " AS smena_id, " & _
                b & " AS TO_id, " & _
                IIf(c <> 0, c, "Null") & " AS place_id, " & _
                """" & frm.Year & "-" & frm.Month & "-" & frm.Day1 & "-" & frm.Day2 & "-__"" AS ved_N " & _
                "INTO TO_Select " & _
                "FROM MSysObjects"

И вообще непонятно, зачем сначала для каждой записи создавать TO_Select,
писать туда эту запись, затем переносить эту запись в ved, и удалять тут же TO_Select.
И так для каждой записи...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / изменение типа данных в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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