Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server) / 25 сообщений из 50, страница 1 из 2
13.07.2004, 15:15
    #32601978
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Проблема вот в чем...
есть форма, основанная на таблице (например Клиенты).
Таблица Клиенты имеет поле klient_id кот автоматически проставляется при заполнении других полей строки.
Соот-но пользователь на форме не должен заполнять поле klient_id, но если его просто не заполнить, значение останется 0 (что не допускается)
Что можно сделать???
...
Рейтинг: 0 / 0
13.07.2004, 15:51
    #32602103
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Неправда, если в таблице полю присвоено значение автономер, то и на форме там будет появлятся номер, кот появляется в таблице
Вообще то пользователю незачем видеть эьо поле вообще, его просто не надо показывать...
...
Рейтинг: 0 / 0
13.07.2004, 15:56
    #32602122
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
я это поле временно сделала видимым и в нем почему-то стоит 0 при добавлении. Я видимо что-то не доделала в самом приложении, потому как в базе проблем нет, у меня сейчас на ней тоже приложение только на VB6.0 работает
...
Рейтинг: 0 / 0
13.07.2004, 15:57
    #32602124
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
я только не пойму что не так?
...
Рейтинг: 0 / 0
13.07.2004, 16:01
    #32602143
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Если вы используете Identity в MS SQL, то должны ввернуть последний сформированный Identity, и обновить соответствующее поле в DataSet. Насколько я помню Data-Wizard в VS.NET, правильно делает код для этого случая. В частности проставляет в Insert команде, select @@identity или select @@scope_identity.

Теперь действия до отправления изменений на сервере, PK не допускает Null значений, для этого в DataTable, в Column который является PK проставляется свойство AutoIncrement = True, AutoSeed = -1 (во избежании конфликтов лучше двигаться в отрицательную сторону)

При использовании Typed DataSet студия тоже правильно заполняет (должна) заполнять эти свойства по схеме данных.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
13.07.2004, 16:03
    #32602147
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Если вы покажете код своих DataAdapter, а также скажете typed DataSet вы используете или нет, то можно поговорить по конкретнее.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
13.07.2004, 17:08
    #32602356
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
SqlDataAdapter1:

SELECT klient_id, klient_name, klient_R_S, klient_K_S, klient_BIK, klient_bank, klient_INN, klient_OKONH, klient_OKPO, klient_komments, klient_type, klient_manager, Klient_date, director, buhgalter FROM TKlients


SqlDataAdapter2:

SELECT adress_id, klient_id, adress, klient_phone, adress_komments FROM TAdress

Что такое DataSet я знаю.
А что такое typed DataSet ?
...
Рейтинг: 0 / 0
13.07.2004, 17:23
    #32602411
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Я посмотрела в CommandText действительно стоит команда Insert...klient_id=@@identity
Но почему-то при Update выдается ошибка, что невозможно вставить так как значение = 0 у klient_id
...
Рейтинг: 0 / 0
13.07.2004, 17:40
    #32602465
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
На форме в виде TextBox поля для ввода информации по клиенту в таблицу TKlinets и есть еще DataGrid (кот основывается на подчиненной талице TAdress). Эти две таблицы связаны по klient_id. Соот-но когда я заполняю поля грида выдается эта ошибка нулевое значение klient_id.
Как можно передать текущее значение кода клиента?

Это ommandText для SqlDataAdpter2:
Код: plaintext
1.
2.
3.
4.
5.
6.
INSERT INTO TAdress
                      (klient_id, adress, klient_phone, adress_komments)
VALUES     (@klient_id, @adress, @klient_phone, @adress_komments);
                          SELECT     adress_id, klient_id, adress, klient_phone, adress_komments
                           FROM         TAdress
                           WHERE     (adress_id = @@IDENTITY)
...
Рейтинг: 0 / 0
13.07.2004, 19:52
    #32602712
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Typed DataSet - типизированный датасет, судя по всему вы его как раз используете.

Тогда посмотрите следующие свойства у столбца TKlient.klient_id


AutoIncrement
AutoIncrementSeed


Для этого откройте схему вашего DataSet, выберите таблицу TKlient и столбец klient_id. Далее см. указанные свойства.
...
Рейтинг: 0 / 0
14.07.2004, 10:25
    #32603123
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
св-ва, кот вы указали мне я установила...
ошибка пока остается актуальной, поэтому у меня все еще вопрос, как указать в гриде (основанной на Tadress) текущее значение klient_id
...
Рейтинг: 0 / 0
14.07.2004, 10:29
    #32603138
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
irinka
св-ва, кот вы указали мне я установила...
ошибка пока остается актуальной, поэтому у меня все еще вопрос, как указать в гриде (основанной на Tadress) текущее значение klient_id

После того как вы установили свойства (и что вы установили) в TKlient значения по klient_id формируются?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
14.07.2004, 10:38
    #32603161
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
в схеме датасета для TKlients поля klient_id св-ва AutoIncrement=true AutoIncrementSeed=-1
...
Рейтинг: 0 / 0
14.07.2004, 11:05
    #32603231
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Sa
в TKlient значения по klient_id формируются?

Например в DataGrid когда вы добавляете запись в DataTable TKlient?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
14.07.2004, 15:28
    #32604141
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Дело в том, что когда открывается форма на добавление в базе в таблице TKlients появляется строка пустая строка, но с кодом клиента.
На форме же когда я заполняю данными и обновляю строкой UpdateDataSet(), в базе ничего не отражается.
Что касается грида, то заполняя одно из полей грила и при переходе на др строку выдается известное вам сообщение о том, что нельзя нулевое значение...
...
Рейтинг: 0 / 0
15.07.2004, 08:27
    #32605077
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
irinka
Дело в том, что когда открывается форма на добавление в базе в таблице TKlients появляется строка пустая строка, но с кодом клиента.
На форме же когда я заполняю данными и обновляю строкой UpdateDataSet(), в базе ничего не отражается.

Давайте попорядку. И вначале следует разобраться в клиентском приложении
1) TKlients теперь автоматически формирует klient_id? (-1, -2 , -3 и т.д)
2) метода UpdateDataSet() в DataSet нет, если он у вас в форме, то привидите его код. В любом случае до обновления базы данных еще рано говорить.
3) Опишите точную последовательность действий, что за чем и как происходит, в общих словах не понятно, что отражается а что нет. В каких гридах, какие данные привязаны к этим гридам, какие формы, что на этих формах и т.д.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
15.07.2004, 10:39
    #32605294
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
1. TKlients теперь автоматически формирует klient_id?
Формирует, но надо учитывать, что приложение с теми функциями, что я сейчас собираюсь воспроизвести на VB.Net уже использовалось раньше на VB6.0, соот-но база не пустая, соот-но не нужно делать св-во ...Seed=-1.
2. С помощью Wizard я создала эту форму и на ней сформировалась кнопка Update с таким обработчиком:
...
Try
UpdateDataSet()
Catch
...
3. Есть форма, на ней
TextBox1 - klient_name
...
TextBoxn - Type_klient
(klient_id - для пользователя не видно)
Все текстбоксы основаны на полях из таблицы TKlients
Ниже расположен грид (основанный на TAdress)
TAdress (klient_id, adress_id, adress, phone, komments)
В гриде я отображаю только последние три поля.
Сначало заполняю TextBox - ы (причем обязательно для заполнения только klient_name)
Потом перехожу в грид, например заполнила только адрес и перехожу на др строку как выдается сообщение, что klient_id не может быть равно 0 ...
...
Рейтинг: 0 / 0
15.07.2004, 10:53
    #32605330
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Прошу прощения, не увидела сразу...
По поводу пункта 2:
Выше описано:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Sub UpdateDataSet()
          Dim objDataSetChanges As Schet.DSProdavec_Adress = New Schet.DSProdavec_Adress()
           Me.BindingContext(DsProdavec_Adress, "TKlients").EndCurrentEdit()
        Me.BindingContext(DsProdavec_Adress, "TAdress").EndCurrentEdit()
              objDataSetChanges = CType(DsProdavec_Adress.GetChanges, Schet.DSProdavec_Adress)
        If (Not (objDataSetChanges) Is Nothing) Then
            Try
                  Me.UpdateDataSource(objDataSetChanges)
                DsProdavec_Adress.Merge(objDataSetChanges)
                DsProdavec_Adress.AcceptChanges()
            Catch eUpdate As System.Exception
                Throw eUpdate
            End Try
        End If

    End Sub
...
Рейтинг: 0 / 0
15.07.2004, 10:57
    #32605349
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
irinka
1. TKlients теперь автоматически формирует klient_id?
Формирует, но надо учитывать, что приложение с теми функциями, что я сейчас собираюсь воспроизвести на VB.Net уже использовалось раньше на VB6.0, соот-но база не пустая, соот-но не нужно делать св-во ...Seed=-1.

Это псевдозначения, при Update эти значения использоваться не будут. А вот Identity возвращаться после Update обратно в DataSet должен и это уже будут настоящие значения поля klient_id. Поэтому наличие Seed = -1 обязательно (В Seed стоит минус один поэтому конфликта уже с существующими загруженными в DataSet записями не будет)


irinka
2. С помощью Wizard я создала эту форму и на ней сформировалась кнопка Update с таким обработчиком:
...
Try
UpdateDataSet()
Catch
...

Ну тут wizard не должен подвести, там скорее всего стоит DataAdapter.Update() и после DataSet.AcceptChanges(), ну и любит он Merge() в принципе туда не вмешиваемся.


irinka
3. Есть форма, на ней
TextBox1 - klient_name
...
TextBoxn - Type_klient
(klient_id - для пользователя не видно)
Все текстбоксы основаны на полях из таблицы TKlients
Ниже расположен грид (основанный на TAdress)
TAdress (klient_id, adress_id, adress, phone, komments)
В гриде я отображаю только последние три поля.
Сначало заполняю TextBox - ы (причем обязательно для заполнения только klient_name)
Потом перехожу в грид, например заполнила только адрес и перехожу на др строку как выдается сообщение, что klient_id не может быть равно 0 ...

Понятно срабатывает constraint и все правильно, поэтому вопрос после того как вы установили AutoIncrementSeed = -1, и AutoIncrement = True исключение продолжает возникать?


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
15.07.2004, 11:12
    #32605392
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Sa
Понятно срабатывает constraint и все правильно, поэтому вопрос после того как вы установили AutoIncrementSeed = -1, и AutoIncrement = True исключение продолжает возникать?

Да, продолжает возникать
...
Рейтинг: 0 / 0
15.07.2004, 11:15
    #32605408
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Я понимаю, почему возникает эты ошибка. Потому что стоит значение 0. Я не понимаю почему там сстоит 0. Создавалось Wizard - ом и не понятно почему когда я начинаю заполнять грид в таблицу TAdress не заносится только что созданные klient_id из TKlients
...
Рейтинг: 0 / 0
15.07.2004, 11:15
    #32605412
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
только что созданный klient_id
...
Рейтинг: 0 / 0
15.07.2004, 11:25
    #32605449
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Вот еще что...
Я заполнила TextBox1 (klient_name) и нажала кнопку Update после чего в TKlients создалась строка с заполнененным полем klient_id, однако поле klient_name имело значение null
...
Рейтинг: 0 / 0
15.07.2004, 11:28
    #32605463
irinka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Последний вопрос снимается, так как я обнаружила что для этого поля не было прописана связь с датасетом
Мне только не понятно почему я создавала Wizard - ом и нигде ничего не прописалось :(
...
Рейтинг: 0 / 0
15.07.2004, 11:42
    #32605517
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server)
Добавьте еще
Код: plaintext
1.
AutoIncrementStep = - 1 

Какие формируются теперь значения klient_id?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пользователь не заполняет поле на форме (так как оно проставляется автоматически благодаря установленному св-ву в базе SQL Server) / 25 сообщений из 50, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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