Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
или хотя бы через textbox. Уже задавала этот вопрос на конфе по VB, но увы &< ADO recordset открыт через DataEnvironment, client-side, LockOptimistic. Пытаюсь на Validate перехватить пустую строку и записать в recordset Null: \nPrivate Sub txtp_name_Validate(Cancel As Boolean) If txtp_name.Text = "" Then DE1.rsadoEmployees("p_name").Value = Null End If End Sub А записываются пустые поля :< А с datacombo - вообще "Operation cancelled". И до сервера update не доходит - смотрела в профайлере. Такое ощущение, что datacombo cancel делает, т.к. не находит в списке соответствия "". Причем после загрузки-то Null поля отображаются корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 14:59 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Erika, а пробовала говорить DE1.rsadoEmployees.Update ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 15:25 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
2 Павел: Угу, пробовала до того, сейчас еще раз проверила. Вместо Null - пустая строка. Причем что самое интересное - один раз из ~50 передается NULL. В основном это происходит при проходе отладчиком, но почему - сказать не могу, т.к. следующая же попытка опять передает '' Пробовала и DE1.rsadoEmployees.Move(0) - с тем же результатом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 16:25 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Я не знаю точно как в VB, но в Delphi(ADO) присваивание Null не проходит. Для этого существует функция Clear. Т.е. Table.FieldByName('Name').Clear Думаю ADO везде одинаково работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 16:54 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
У ADO recordset метода Clear я не нашла ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 17:02 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Нет у RecordSet ф-ии Clear нет. Она должна быть у Field (или как оно там в VB обзывается). DE1.rsadoEmployees("p_name").Clear ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 17:15 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Я в VB метод Clear нашла только в применении к ADO: Removes all the Error objects from the Errors collection. Ничего не получается Как же быть? Ниужели никто на VB с этим не сталкивался? Можно, конечно, закрыть глаза на пустые строки вместо null для textbox (хотя мне привычнее как-то Null), но как быть с datacombo? На Null то он реагирует корректно, а на '' начинает искать соответствующую запись в связанной таблице, и не находя ее сильно ругается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2002, 09:18 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Дык когда проблема то возникает? При попытке передать-записать в таблицу/поле значение NULL. А ты, как я понял, пишешь в таблицы напрямую из открытого рекордсета? Попробуй сохранять данные через SP. Там можно будет делать проверку типа: IF @Param='' SET @Param=NULL UPDATE TBL SET FLD=@Param WHERE..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 02:56 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Я проверял, у меня саокойно из рекордсета вбивается Null. Попробуйте симитировать ситуацию без использования визуальных компонентов - чисто программно. Если все будет ок, то проблема в них. Если нет, то Какая версия MDAC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 08:29 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
2 Павел: Действительно, программно Null передается без проблем. Интересно, что же с ним контролы делают? 2 AlexanderVS: По сильной привычке к Аксессу97, действительно работаю с открытым recordset (на VB перешла недавно). Отсюда ламерский вопрос - если обновление делать через хп, то recordset открывать с блокировкой adLockReadOnly? А при перемещении на другую запись сохранять данные через SP, а потом еще и контролы обновлять? Если меня ткнут носом в хорошую ссылку, буду весьма признательна. ( Мне надо сымитировать работу формы Access, чтобы не пугать пользователей сразу непривычным интерфейсом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 11:24 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Крыша тихо едет!!! Для textbox сработала такая конструкция: \nPrivate Sub txtp_name_Validate(Cancel As Boolean) If txtp_name.Text = "" Then DE1.rsadoEmployees("p_name").Value = Null DE1.rsadoEmployees.Update "p_name", Null End If End Sub Причем именно сначала Value = Null, а потом еще и Update ее. Чисто интуитивно очень мне эта конструкция не нравится. А вот с datacombo этот фокус не работает - говорит "Multiple-step operation generated errors. Check each status value. (-2147217887) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 18:05 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Крыша тихо едет!!! Для textbox сработала такая конструкция: \nPrivate Sub txtp_name_Validate(Cancel As Boolean) If txtp_name.Text = "" Then DE1.rsadoEmployees("p_name").Value = Null DE1.rsadoEmployees.Update "p_name", Null End If End Sub Причем именно сначала Value = Null, а потом еще и Update ее. Чисто интуитивно очень мне эта конструкция не нравится. А вот с datacombo этот фокус не работает - говорит "Multiple-step operation generated errors. Check each status value. (-2147217887) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 18:05 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Если у вас контролы на форме соеденены напрямую с полями таблицы через датаконтрол, то конечно обновление данных через SP тут не пройдет. При использовании SP необходимо подготовить все данные в отвязанной форме, а потом запустить SP и передать эти данные в качестве параметров или через временную таблицу, если параметров слишком много. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2002, 02:07 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Хочу похвастаться - не прошло и полгода, как решение было найдено: Отлавливается событие RecordChangeComplete и в нем при adReason = adRsnFirstChange все проверяется и заменяется, и если поле поддерживает NULL, а его значение "", подставляется NULL. (Критику принимаю) Private Sub rsEmp_RecordChangeComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, _ ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Dim f As ADODB.Field If adReason = adRsnFirstChange Then For Each f In pRecordset.Fields If f.Type <> adChapter Then If CBool(f.Attributes And adFldIsNullable) And f.Value = "" Then f.Value = Null End If End If Next f End If End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2002, 09:40 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
(Тихо сам с собою я веду беседу.) Рано обрадовалась и похвасталась, как оказалось - все это работает, только ежели BoundColumn текстовый. А если числовой - увы и ах. Ну неужели никто не пишет на VB для связанного режима? Мне не очень понравились для ввода данных отсоединенные рекордсеты в плане блокировок - народ любит дружно бросаться редактировать последние записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2002, 11:27 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
(Тихо сам с собою я веду беседу.) Рано обрадовалась и похвасталась, как оказалось - все это работает, только ежели BoundColumn текстовый. А если числовой - увы и ах. Ну неужели никто не пишет на VB для связанного режима? Мне не очень понравились для ввода данных отсоединенные рекордсеты в плане блокировок - народ любит дружно бросаться редактировать последние записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2002, 11:55 |
|
||
|
И еще один вопрос - передача Null через datacombo (ADO ) ?
|
|||
|---|---|---|---|
|
#18+
Судя по оживленности обсуждения, вопрос не очень интересный, но я все же изложу найденное решение (немного через коленку): Создается sp: \nCREATE PROCEDURE dbo.stuffsAndNull AS SELECT post_num , post_name FROM dbo.Stuffs UNION SELECT 0 AS post_num, '-' AS post_name ORDER BY post_name GO Опосля чего на событии FieldChangeComplete текстовые строки проверяются на "" а числовые на 0 Private Sub rsemp_FieldChangeComplete(ByVal cFields As Long, ByVal Fields As Variant, _ ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Dim f As Variant For Each f In Fields If CBool(f.Attributes And adFldIsNullable) = True Then If f.Type = adChar Then If f.Value = "" Then f.Value = Null End If ElseIf f.Type = adBigInt Or f.Type = adInteger Or f.Type = adSmallInt Or f.Type = adTinyInt Then If f.Value = 0 Then f.Value = Null End If End If End If Next f End Sub т.е. чтобы обнулить поле пользователь должен набрать "-" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2002, 12:04 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32024696&tid=1823629]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 387ms |

| 0 / 0 |
