Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выдается ошибка вставки, после выполнения Unload Me / 23 сообщений из 23, страница 1 из 1
07.06.2004, 16:09
    #32551062
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
Есть две таблицы в SQL Server: KlientsNew(список всех клиентов) и Adress (где для соот-его кода клиента его адрес)
Эти две таблицы связаны по коду клиента (внешний ключ FK_TAdress_TKlient) и стоит cв-во каскадного удаления адреса из таблицы Adress в случае удаления данного клиента из таблицы KlientsNew.

Есть форма, на которой все TextBox связаны с полями из Таблицы Клиент и DataGrid, который га основе таблицы Адрес

Есть кнопка Отмена.
На кнопке Отмена висит такой обработчик:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub cmdClose_Click()
With MainDataEnvironment.rscmdKlientsNew
        If .Fields("klient_name").Value = "" Or IsNull(.Fields("klient_name").Value) Then
            .Delete
            .Close
                            
        Else
            .CancelUpdate
            .Close
            
        End If
    End With
       Unload Me
End Sub
Так вот, при выполнении строки Unload Me выдается сообщение:
Insert statemet conficted with column Foreign Key constaint FK_TAdress_TKlient...
Во-первых мне не понятно почему происходит вставка, а во-вторых, что за ошибка.
...
Рейтинг: 0 / 0
07.06.2004, 16:34
    #32551120
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
наверняка есть обрабюотка событий Form_Unload или Form_QueryUnload - там и ищите ошибку.

P.S. поставить Break On All Errors слабо?
...
Рейтинг: 0 / 0
08.06.2004, 11:44
    #32552056
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
обработчика на события Form_Unload нет
а перехватить момент не могу, ед-ное что нашла, так это вылетает на строке Unload и все
а про Break On All Errors слабо - не знаю где найти
...
Рейтинг: 0 / 0
08.06.2004, 11:53
    #32552086
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
нашла Break on All ...
...
Рейтинг: 0 / 0
08.06.2004, 12:06
    #32552128
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
а что такое Break On All Errors?
...
Рейтинг: 0 / 0
08.06.2004, 12:11
    #32552139
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
поставила я break on all.. и легче не стало
смысл не вижу, я ведь все равно не вижу почему он на Unload вылетает
...
Рейтинг: 0 / 0
08.06.2004, 12:14
    #32552148
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
ставишь флажок на этот пункт и останавливается на любых ошибках
...
Рейтинг: 0 / 0
08.06.2004, 12:15
    #32552149
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
to irinka
а что такое Break On All Errors?
...
Рейтинг: 0 / 0
08.06.2004, 12:19
    #32552160
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
что-то я вопрос не поняла:
это остановка в случае возникновения любых ошибках
...
Рейтинг: 0 / 0
08.06.2004, 12:31
    #32552202
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
где флажок ставить?
...
Рейтинг: 0 / 0
08.06.2004, 12:53
    #32552266
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
Tools->Options-> закладка General -> пункт Break on all errors
...
Рейтинг: 0 / 0
08.06.2004, 13:14
    #32552347
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
спасибо
...
Рейтинг: 0 / 0
08.06.2004, 17:31
    #32552942
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
irinkaобработчика на события Form_Unload нет
а перехватить момент не могу, ед-ное что нашла, так это вылетает на строке Unload и все
а про Break On All Errors слабо - не знаю где найти

попробуйте закоментарить весь код в обработчике события, кроме Unload Me.
будет понятно где искать. Судя по коду в этом обработчике - проблема в другом месте.
...
Рейтинг: 0 / 0
20.06.2004, 21:20
    #32568803
sss125
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
.Fields("klient_name") вот и вся ошибка. Не надо путать типы данных. В данном случае строковый и целочисленный.
...
Рейтинг: 0 / 0
21.06.2004, 10:45
    #32569104
Дурак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
Да, ладно, блин. Я всю жисть так делаю. И более того, ЭТО ПРАВИЛЬНО.
А писать .Fields(0) - IMHO плохой стиль программирования.

P.S.
А то еще и вот так: !klient_name
:)
И никаких ошибок.
...
Рейтинг: 0 / 0
21.06.2004, 13:04
    #32569497
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
я так и не понял причем здесь типы данных...
.Fields в качестве параметра принимает или текстовое имя поля и его порядковый индекс. Так что .Fields("klient_name") - вполне допустимое выражение, и я бы даже сказал от себя лично - более хороший вариант, который страхует от ошибок вследствие изменения порядка полей в результирующем запросе.

Проблема явне не в приведенном коде. Наверняка при Unloade происходит неконтролируемое закрытие каких-то объектов доступа к данным, особенно этим страдают всякие там DataEnvironment и DataComponents, которые кладутся на форму мышкой - типа для "быстрой" разработки. А на самом деле непонятно что и когда они делают. Опять-таки на мой личный взгляд, чтобы делать более-менее нормальные и надежные приложения используя эту лабуду, то с ней разбираться гораздо дольше, чем разобраться и написать строку конекшина, открытие-закртытие рекордсета и процедуру обновления данных в полях формы.
...
Рейтинг: 0 / 0
21.06.2004, 14:31
    #32569746
Дурак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
2Hibernate

Ну дык и я о том же :). Только менее умными словами... Я же дурак :).
...
Рейтинг: 0 / 0
21.06.2004, 16:09
    #32570022
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
2Дурак
так отож - просто у меня открытый браузер был с самого утра - список не обновил, а когда обновил и увидел твое сообщение - жалко было свой пассаж удалять... :-)
...
Рейтинг: 0 / 0
22.06.2004, 13:32
    #32571595
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
HibernateПроблема явне не в приведенном коде. Наверняка при Unloade происходит неконтролируемое закрытие каких-то объектов

Я согласна что, при Unload Me что-то происходит, что вызывает ошибку. Я никак не могу понять на чем именно все вылетает, так как мне не видно, что и в какой последовательности закрывается и очищается и соот-но в каком месте все глохнет.
...
Рейтинг: 0 / 0
22.06.2004, 14:51
    #32571801
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
irinka
Я согласна что, при Unload Me что-то происходит, что вызывает ошибку. Я никак не могу понять на чем именно все вылетает, так как мне не видно, что и в какой последовательности закрывается и очищается и соот-но в каком месте все глохнет.
так как Вы пользуетесь DataEnvironment, к сожалению, я ничем не смогу помочь - когда-то один раз с этим столкнулся и больше никогда не буду этим пользоваться именно из-за подобных проблем - когда непонятно что происходит.

Что могу посоветовать - поищите где-либо при открытии формы код, который добавляет новую запись в рекордсет, либо это где-то в самих настройках этого самого DataEnvironment и Kо.

если у Вас стоит Break On All Errors и все останавливается на Unload_Me, это значит, что никакой Ваш код в этой строке больше не выполняется, а выполняется код при разрушении каких-то компонент, размещенных на форме - поэтому этот код и не дебагится. Разбирайтесь с DataEnvironment - управлять им и прочими "интелектуальными" визуальными компонентами не так просто как кажется на первый взгляд.

А конкретно ошибка Insert statemet conficted with column Foreign Key constaint FK_TAdress_TKlient говорит о том, что вы пытаетесь вставить запись с неправильной ссылкой (тоесть одно из полей этой записи ссылается на отсутствующую запись в другой таблице).
...
Рейтинг: 0 / 0
23.06.2004, 12:55
    #32573565
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
В таких непонятных случаях я пользуюсь этим кодом:

Код: plaintext
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.
Public Function TraceRs(rst As ADODB.Recordset, Optional SortCol As String = "", Optional Comment As String) As String
'ðàñïå÷àòûâàåò ñîäåðæèìîå ðåêîðäñåòà - äëÿ öåëåé îòëàäêè
Dim rsClone As ADODB.Recordset
Dim i As Long
Dim strTmp As String
Dim s As String
    Set rsClone = rst.Clone
    rsClone.Sort = rst.Sort
    Debug.Print "Tracing recordset " & Comment
    strTmp = ""
    For i = 0 To rsClone.Fields.Count - 1
        strTmp = strTmp & rsClone(i).Name & " | "
    Next i
    Debug.Print strTmp
    s = strTmp & vbCrLf
    While Not rsClone.EOF
        strTmp = ""
        For i = 0 To rsClone.Fields.Count - 1
            strTmp = strTmp & GetStringValue(rsClone.Fields(i).Value) & " | "
        Next i
        Debug.Print strTmp
        s = s & strTmp & vbCrLf
        rsClone.MoveNext
    Wend
    TraceRs = s
End Function
'
Private Function GetStringValue(v) As String
    If IsNull(v) Then
        GetStringValue = "NULL"
    ElseIf IsEmpty(v) Then
        GetStringValue = "EMPTY"
    Else
        GetStringValue = v
    End If
End Function

Нужно расставить TraceRS в разные места и отловить момент, когда значение FK клиента в Adress меняется, и на что меняется (подозреваю, что в поле FK клиента пишется 0).
...
Рейтинг: 0 / 0
23.06.2004, 12:59
    #32573581
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
В догонку: Data Environment тоже имеет события, советую посмотреть и их.
...
Рейтинг: 0 / 0
23.06.2004, 13:58
    #32573785
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдается ошибка вставки, после выполнения Unload Me
спасибо за содействие
я сделала так:
я поменяла DataGrid на SSOleDBGrid, теперь при удалении все нормально, только проблема поп поводу наличия одних заголовков без пустой записи осталась, этот вопрос я поставила в др теме
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выдается ошибка вставки, после выполнения Unload Me / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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