powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выдается ошибка вставки, после выполнения Unload Me
23 сообщений из 23, страница 1 из 1
Выдается ошибка вставки, после выполнения Unload Me
    #32551062
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две таблицы в 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
Выдается ошибка вставки, после выполнения Unload Me
    #32551120
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверняка есть обрабюотка событий Form_Unload или Form_QueryUnload - там и ищите ошибку.

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

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

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

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

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

Я согласна что, при Unload Me что-то происходит, что вызывает ошибку. Я никак не могу понять на чем именно все вылетает, так как мне не видно, что и в какой последовательности закрывается и очищается и соот-но в каком месте все глохнет.
...
Рейтинг: 0 / 0
Выдается ошибка вставки, после выполнения Unload Me
    #32571801
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Выдается ошибка вставки, после выполнения Unload Me
    #32573565
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких непонятных случаях я пользуюсь этим кодом:

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


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