Добавление записей в базу данных через код в VB6

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
dima81
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 26.08.2007 (Вс) 22:36

Добавление записей в базу данных через код в VB6

Сообщение dima81 » 04.09.2007 (Вт) 0:02

Пытаюсь добавить в базу данных новую запись через такой код:

SQL_String = "Insert Into Ремонты " & _
" (ДатаВРемонт, ДатаИзРемонта " & _
" Values (" '" & CDate(CombDate1.Text) & "' , ' ' )"

cn1.Execute SQL_String

Все хорошо, но только выводится ошибка
"Несоответствие типов данных в условии отбора"

Она выводится потому, что не может добавить пустую запись (в столбец ДатаИзРемонта) в базу данных, так как у меня в базе данных ДатаВРемонт, ДатаИзРемонта - тип Дата/Время. С CombDate1 (для столбца ДатаВРемонт) я приминил функцию CDate, так как этот столбец предусматривает запись. А как же сделать так, чтобы в стобец ДатаИзРемонта была введена пустая запись.? Как видите вариант с двумя апострафами вызывает ошибку.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 04.09.2007 (Вт) 0:06

Это зависит от структуры БД.

Если разрешить для этого поля значение NULL, то можно поле в INSERT'е вообще не указывать. Можно еще сделать для этого поля значение по умолчанию, например: '1900-01-01' и тоже не указывать поле в INSERT'е, значение автоматически появится в новой записи.

Если структуру таблицы менять нельзя, можно просто присваивать условное значение '1900-01-01', которое будет означать "реальное значение неизвестно"
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 04.09.2007 (Вт) 8:46

Она выводится потому, что не может добавить пустую запись (в столбец ДатаИзРемонта) в базу данных


так укажите этот параметр не как пустую строку а как Null, если конечно, как сказали выше VVitafresh, в поле можно хранить Null

SQL_String = "Insert Into Ремонты " & _
" (ДатаВРемонт, ДатаИзРемонта) " & _
" Values (" '" & CDate(CombDate1.Text) & "' , Null )"
I Have Nine Lives You Have One Only
THINK!

tarrac
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 14.06.2005 (Вт) 16:58

Сообщение tarrac » 04.09.2007 (Вт) 9:11

Сталкивался.

Код: Выделить всё
SQL_String = "Insert Into Ремонты " & _
" (ДатаВРемонт, ДатаИзРемонта) " & _
" Values (" #" & Replace(CDate(CombDate1.Text),".","/") & "# , Null )"


Просто в акцессе в качестве разделителя стоит "/", и в запросе дату надо заключать в "#"
Явное указание наследственности отменяет полиморфизм виртуальных функций

dima81
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 26.08.2007 (Вс) 22:36

Сообщение dima81 » 04.09.2007 (Вт) 10:09

HandKot, этот код работает

SQL_String = "Insert Into Ремонты " & _
" (ДатаВРемонт, ДатаИзРемонта) " & _
" Values (" '" & CDate(CombDate1.Text) & "' , Null )"

Самое интересное, что вариант, предложенный tarrac, тоже работает:

SQL_String = "Insert Into Ремонты " & _
" (ДатаВРемонт, ДатаИзРемонта) " & _
" Values (" #" & Replace(CDate(CombDate1.Text),".","/") & "# , Null )"

VVitafresh,
Если разрешить для этого поля значение NULL, то можно поле в INSERT'е вообще не указывать.


Проверил, и этот способ тоже работает. Буду выбирать тот, который больше понравиться :D

Спасибо всем!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 04.09.2007 (Вт) 10:16

dima81 писал(а):Проверил, и этот способ тоже работает. Буду выбирать тот, который больше понравиться :D


Посмотри в Help-e про CreateParameter Method.
Пример там есть.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 49

    TopList