Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с фоматом времени в поле базы. / 23 сообщений из 23, страница 1 из 1
28.01.2002, 07:45
    #32021600
Deniss Pimenov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Люди, помогите! Есть таккая проблема. Есть база, созданная в Access через Visual Data Manager. Несколько полей этой базы имеют содержимое дату (записывается пользователем). Но для некоторых записей это поле должно быть пустым, но пустое значение Бейсик не пишет в базу, а выдает ошибку. Можно конечно создать поле формата не Date/Time, а Text, но тогда не будет работать сортировка по полю, где содержится дата. Как выпутаться?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
06.04.2007, 12:26
    #34443065
Granata005
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Повеситься. ;)

тема 2002 года - ну помогите чуваку...
...
Рейтинг: 0 / 0
06.04.2007, 12:36
    #34443107
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
А NULL использовать?
...
Рейтинг: 0 / 0
20.08.2007, 14:01
    #34738507
Appix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Столкнулся с такой же проблемой. Если в Text1.Text записать дату вида dd.MM.yyyy то запрос выполняется успешно, а если Text1.Text пустое то ошибка. CDate, Format не помогают, Null тоже не проходить. Неделю лазею на форуме и вообще по нету ответа так и не нашел. Буду рад любой помощи. Вот один из вариантов моего запроса

soedin.Execute "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values (#" & txtRojd.Text & "#, '" & fio & "', '" & dol & "', '" & mest & "')"
rstsvod.Requery

' Дата_рождения - поле формата Дата/время в Access
...
Рейтинг: 0 / 0
20.08.2007, 14:15
    #34738583
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
А если перед выполнением твоего запроса проверять пустое поля с датой или нет???
Если есть данные то запрос
Код: plaintext
1.
soedin.Execute "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values (#" & txtRojd.Text & "#, '" & fio & "', '" & dol & "', '" & mest & "')"
Если поле пустое то
Код: plaintext
1.
2.
soedin.Execute "insert into Svodn ( KeyF, KeyD, KeyM) " & _
"values ( fio & "', '" & dol & "', '" & mest & "')"

Вот и все.

С уважением, Николай.
...
Рейтинг: 0 / 0
20.08.2007, 14:19
    #34738603
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Можно также использовать параметризованный запрос и не париться с форматом.
...
Рейтинг: 0 / 0
20.08.2007, 14:22
    #34738617
Appix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
дата может водится, а может и не вводиться

Dim dat As Variant
If txtRojd.Text = "" Then
dat = CDate(txtRojd.Text)
dat = Format(dat, "dd.mm.yyyy")
Else
dat = txtRojd.Text
End If
...
Рейтинг: 0 / 0
20.08.2007, 14:35
    #34738677
Appix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
У меня четыре таких поля Дата\Время в Access И как сделать параметризованный запрос??
...
Рейтинг: 0 / 0
20.08.2007, 18:06
    #34739698
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
написать функцию которая приобразует дату в строку с датой или в NULL и использовать при подстановке в запрос.
Код: plaintext
1.
2.
soedin.Execute "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values (" & Date2NULL(txtRojd.Text) & ", '" & fio & "', '" & dol & "', '" & mest & "')"
...
Рейтинг: 0 / 0
21.08.2007, 04:45
    #34740422
Appix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Я еще зеленый (мало знаю VB), поэтому можно по подробней! что за функция Date2NULL("text") и вообще у меня поля Дата\Время значение Null не воспринимают. При
Dim dat1 As Variant
dat1 = Null
soedin.Execute "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values (#" & dat1 & "#, '" & fio & "', '" & dol & "', '" & mest & "')"

пишет: дата содержит синтаксическую ошибку
...
Рейтинг: 0 / 0
21.08.2007, 09:11
    #34740533
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
AppixЯ еще зеленый (мало знаю VB), поэтому можно по подробней! что за функция Date2NULL("text") и вообще у меня поля Дата\Время значение Null не воспринимают. При
Dim dat1 As Variant
dat1 = Null
soedin.Execute "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values (#" & dat1 & "#, '" & fio & "', '" & dol & "', '" & mest & "')"

пишет: дата содержит синтаксическую ошибку

Для работы с датами лучше использовать DTPicker
а в твоем случае попробуй это

Код: plaintext
1.
2.
3.
4.
5.
6.
If IsDate(Text1.Text) = True Then
    soedin.Execute "insert into Svodn (Äàòà_ðîæäåíèÿ, KeyF, KeyD, KeyM) " & _
    "values (#" & Text1.Text & "#, '" & fio & "', '" & dol & "', '" & mest & "')"
Else
    soedin.Execute "insert into Svodn (Äàòà_ðîæäåíèÿ, KeyF, KeyD, KeyM) " & _
    "values (NULL, '" & fio & "', '" & dol & "', '" & mest & "')"
End If
...
Рейтинг: 0 / 0
21.08.2007, 09:46
    #34740596
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
AppixЯ еще зеленый (мало знаю VB), поэтому можно по подробней! что за функция Date2NULL("text") и вообще у меня поля Дата\Время значение Null не воспринимают. При
Dim dat1 As Variant
dat1 = Null
soedin.Execute "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values (#" & dat1 & "#, '" & fio & "', '" & dol & "', '" & mest & "')"

пишет: дата содержит синтаксическую ошибку
Для NULL не нужны решетки, отсюда и ошибка.
Функцию Date2NULL нужно написать самому.
...
Рейтинг: 0 / 0
21.08.2007, 19:20
    #34742994
Appix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Так как у меня несколько полей вида Дата\Время, то перебирать их все накладно (т.е. в какие данные ввели, а в какие нет) Пришел к такому решению:

If IsDate(txtRojd.Text) = True Then
dat1 = CDate(txtRojd.Text)
Else
dat1 = IsDate(Nothing) 'здесь почему-то в поле вставляется "0:00:00" , я не понял?
End If

soedin.Execute "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values ('" & dat1 & "', '" & fio & "', '" & dol & "', '" & mest & "')"
rstsvod.Requery

За тем пробегаюсь по всем строчкам в поле Дата_рождения, меняю 0:00:00 на Null

rstob.Open ("select Svodn.Дата_рождения From Svodn where Дата_рождения=#0:00:00#"), soedin, adOpenStatic, adLockOptimistic
If rstob.RecordCount > 0 Then
soedin.Execute "update Svodn Set Дата_рождения=Null Where Дата_рождения=#0:00:00#"
rstob.Requery
End If
Наверно можно как-нибудь это проще сделать, но это работает.
Спасибо за помощь, сам бы не догнал
...
Рейтинг: 0 / 0
22.08.2007, 10:11
    #34743828
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Appix
Код: plaintext
1.
2.
3.
4.
5.
If IsDate(txtRojd.Text) = True Then
dat1 = CDate(txtRojd.Text)
Else
dat1 = IsDate(Nothing)    'здесь почему-то в поле вставляется "0:00:00" , я не понял?
End If

Зачем в случае если не дата присваивать IsDate(Nothing) ? Функция вернет ЛОЖЬ, потом она преобразуется к дате (нулевой). Отсюда и Ваше "0:00:00"
Вы делаете примерно то, что я советовал Вам сделать функцией. Только отойдите от типа дата, оперируйте строкой.
Код: plaintext
1.
2.
3.
4.
5.
6.
DIM dat1 as String
If IsDate(txtRojd.Text)  Then
dat1 = CDate(txtRojd.Text)
Else
dat1 = "NULL"
End If
...
Рейтинг: 0 / 0
22.08.2007, 10:15
    #34743842
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
AppixЗа тем пробегаюсь по всем строчкам в поле Дата_рождения, меняю 0:00:00 на Null

rstob.Open ("select Svodn.Дата_рождения From Svodn where Дата_рождения=#0:00:00#"), soedin, adOpenStatic, adLockOptimistic
If rstob.RecordCount > 0 Then
soedin.Execute "update Svodn Set Дата_рождения=Null Where Дата_рождения=#0:00:00#"
rstob.Requery
End If

Открою секрет, одна строка
Код: plaintext
soedin.Execute "update Svodn Set Дата_рождения=Null Where Дата_рождения=#0:00:00#"
будет работать, как вся Ваша конструкция.
...
Рейтинг: 0 / 0
22.08.2007, 15:08
    #34745026
Appix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
DIM dat1 as String
If IsDate(txtRojd.Text) = True Then
dat1 = CDate(txtRojd.Text)
Else
dat1 = "Null" ' выдает ошибку: "Несоответствие типов данных в выражении условия отбора"
End If

За совет с update спасибо!
...
Рейтинг: 0 / 0
22.08.2007, 16:19
    #34745295
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Ошибку выдает при NULL? Или при каком-то значении?
...
Рейтинг: 0 / 0
22.08.2007, 17:29
    #34745514
Appix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Когда txtRojd.Text пустое поле
...
Рейтинг: 0 / 0
22.08.2007, 18:37
    #34745749
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
А приведите строку, которая подставляется в soedin.Execute (не код, а уже конечную строку)
...
Рейтинг: 0 / 0
24.08.2007, 12:37
    #34750509
Focus_NEW
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
А в самой аксесовской таблице разрешено в эти поля записывать пустое значение??
параметр "Обязательное поле"
...
Рейтинг: 0 / 0
24.08.2007, 13:46
    #34750801
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Судя по тому, что выполняется запрос на обнуления поля, должно быть разрешено.
...
Рейтинг: 0 / 0
24.08.2007, 17:45
    #34751757
Appix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Вот так выглядет моя конечная строка плюс еще несколько полей, но проблемма не вних.
soedin.Execute "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values ('" & dat1 & "', '" & fio & "', '" & dol & "', '" & mest & "')

Сам так и не смог разобраться?
...
Рейтинг: 0 / 0
24.08.2007, 18:55
    #34751926
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с фоматом времени в поле базы.
Это конечный код.
А какая будет строка, если выполнить
Код: plaintext
1.
? "insert into Svodn (Дата_рождения, KeyF, KeyD, KeyM) " & _
"values ('" & dat1 & "', '" & fio & "', '" & dol & "', '" & mest & "')
(в Immedate Window)?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с фоматом времени в поле базы. / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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