powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / value of type 'date' cannot be converted to System.Data.SqlClient.
25 сообщений из 43, страница 1 из 2
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32633167
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в коде при присвоении параметру значения переменной ParametrDate, подчеркивается эта переменная.
в пояснении написано, что
value of type 'date' cannot be converted to System.Data.SqlClient.
Что не так с типом?

ниже приведен код, в котором эта самая переменная как бы выделена красным (как бы потому как она стоит только в тегах и без красного цвета)
Код: 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.
36.
37.
38.
39.
40.
Public Sub UpdateParametr(ByRef ParametrName As String, ByRef ParametrInt As Short, ByRef ParametrDate As DateTime, ByRef ParametrStr As String)
        dacmdParametrs.SelectCommand = New System.Data.SqlClient.SqlCommand()
        dacmdParametrs.UpdateCommand = New System.Data.SqlClient.SqlCommand()

        dacmdParametrs.UpdateCommand.CommandText = "update tglobal set parametr_name=@parametr_name, parametr_value_int=@parametr_value_int, parametr_value_date=@parametr_value_date, parametr_value_string=@parametr_value_string where (parametr_name=@parametr_name) And (parametr_value_int=@parametr_value_int) And (parametr_value_date=@parametr_value_date) And (parametr_value_string=@parametr_value_string)"
        dacmdParametrs.UpdateCommand.Connection = SqlConnection1

        dacmdParametrs.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@parametr_name", System.Data.SqlDbType.VarChar,  50 , "parametr_name"))
        dacmdParametrs.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@login_user", System.Data.SqlDbType.VarChar,  50 , "login_user"))
        dacmdParametrs.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@parametr_value_int", System.Data.SqlDbType.Int,  0 , "parametr_value_int"))
        dacmdParametrs.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@parametr_value_date", System.Data.SqlDbType.DateTime,  8 , "parametr_value_date"))
        dacmdParametrs.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@parametr_value_string", System.Data.SqlDbType.VarChar,  50 , "parametr_value_string"))


        dacmdParametrs.SelectCommand.CommandText = "SELECT parametr_value_int, parametr_value_date, parametr_value_string, login_user, parametr_name FROM TGlobal WHERE (parametr_name like @parametr_name) AND (login_user like @login_user)"
        dacmdParametrs.SelectCommand.Connection = SqlConnection1
        dacmdParametrs.SelectCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@parametr_name", System.Data.SqlDbType.VarChar,  50 , "parametr_name"))
        dacmdParametrs.SelectCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@login_user", System.Data.SqlDbType.VarChar,  50 , "login_user"))

        dacmdParametrs.SelectCommand.Parameters("@parametr_name").Value = ParametrName
        dacmdParametrs.SelectCommand.Parameters("@login_user").Value = myuser


        dacmdParametrs.Fill(dscmdParametrs)

        If (dscmdParametrs.Tables( 0 ).Rows.Count =  0 ) Then
           ...
        Else
            If Not IsNothing(ParametrInt) Then
                dacmdParametrs.UpdateCommand.Parameters("@parametr_name").Value = ParametrName
            End If
            If Not IsNothing(ParametrDate) Then
                dacmdParametrs.UpdateCommand.Parameters("@parametr_value_date") = [color=red]ParametrDate[/color]
            End If
            If Not IsNothing(ParametrStr) Then
               dacmdParametrs.UpdateCommand.Parameters("@parametr_value_string") = ParametrStr
            End If
        End If

        dacmdParametrs.Update(dscmdParametrs)
    End Sub
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32633256
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, вопрос снимается
Наконец-то я увидела, что забыла написать .Value
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32633335
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:(
код-то теперь без ошибок, а вот рез-т выполнения его я не вижу.
может я что-то не так написала?
этот код находится в модуле и вызывается на клик кнопки на форме таким образом:
Module1.UpdateParametr("glbArcBeginDate", 0, DateTimePicker1.Value, "")
Module1.UpdateParametr("glbArcEndDate", 0, DateTimePicker2.Value, "")

Я не пойму почему после его выполнения в таблице (в базе) ничего не меняется.
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32633358
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Что выдаст MsgBox перед Update:
Код: plaintext
1.
2.
MsgBox(dscmdParametrs.HasChanges)
dacmdParametrs.Update(dscmdParametrs)

2) Проверьте в дебаг режиме все параметры передаваемые Update. И попробуйте выполнить такой же Update на QA только уже вручную подставленными параметрами.
Код: plaintext
1.
"update tglobal set parametr_name=@parametr_name, parametr_value_int=xx, parametr_value_date=xx, parametr_value_string=xx where .........

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32633373
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоп, я что то не понял, так и не будет работать.
Вам надо просто выполнить Update ????
Если да то DataAdapter вообще не нужен. Просто выполняйте свой UpdateCommand
Код: plaintext
1.
cmd.ExecuteNonQuery() ' где cmd ваш UpdateCommand

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32633532
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исправила на execute, пока все еще не добавляется в таблицу...
а по поводу этой строки
dacmdParametrs.Fill(dscmdParametrs)
...
по логике, это должно быть через адаптер в дадасет (как у меня и написано), потому как потом я просматриваю в сете выбранную запись и редактирую ее, правильно я понимаю?
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634215
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исправила на execute, пока все еще не добавляется в таблицу...
а по поводу этой строки
dacmdParametrs.Fill(dscmdParametrs)
...
по логике, это должно быть через адаптер в дадасет (как у меня и написано), потому как потом я просматриваю в сете выбранную запись и редактирую ее, правильно я понимаю?

Но мы насколько я понимаю говорим не про Fill, а про Update и в этом случае можно обойтись без DataAdapter, так как вы решили передавать все параметры в UpdateCommand вручную.

Представьте DDL скрипт таблицы tglobal

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634310
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю, вы попросили структуру таблицы (sql скрипт):
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE [dbo].[TGlobal] (
	[parametr_name] [varchar],
	[login_user] [varchar] ( 50 ),
	[parametr_value_int] [int] NULL ,
	[parametr_value_date] [datetime] NULL ,
	[parametr_value_string] [varchar] ( 256 ) NULL )
да мы, действительно говорим про Update просто может причина моей ошибки гораздо раньше, поэтому я уточнила про строку Fill.
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634326
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самое интересное, что тот код, кот написан в if после Else -
рез-т его действия не отражается в таблице, но также и для кода, кот написан до Else (его приведу чуть ниже)
Суть такая:
Если ни одной записи не занесено в сет, тогда выполняется код для добавления новой записи, а если условие удовлетворяется, тогда выполняется код, после Else
Вырезка из обработчика с if:
Код: 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.
If (dscmdParametrs.Tables( 0 ).Rows.Count =  0 ) Then
            Dim drDiscount As DataRow
            drDiscount = dscmdParametrs.Tables( 0 ).NewRow
            drDiscount.Item("parametr_name") = ParametrName
            drDiscount.Item("login_user") = myuser
            If Not IsNothing(ParametrInt) Then
                drDiscount.Item("parametr_value_int") = ParametrInt
            End If
            If Not IsNothing(ParametrDate) Then
                drDiscount.Item("parametr_value_date") = ParametrDate
            End If
            If Not IsNothing(ParametrStr) Then
                drDiscount.Item("parametr_value_string") = ParametrStr
            End If
            dscmdParametrs.Tables( 0 ).Rows.Add(drDiscount)
            SqlConnection1.Close()

        Else
            dacmdParametrs.UpdateCommand.Parameters("@login_user").Value = myuser
            dacmdParametrs.UpdateCommand.Parameters("@parametr_name").Value = ParametrName
            If Not IsNothing(ParametrInt) Then
                               dacmdParametrs.UpdateCommand.Parameters("@parametr_value_int").Value = ParametrInt
            End If
            If Not IsNothing(ParametrDate) Then
                                dacmdParametrs.UpdateCommand.Parameters("@parametr_value_date").Value = ParametrDate
            End If
            If Not IsNothing(ParametrStr) Then
                                dacmdParametrs.UpdateCommand.Parameters("@parametr_value_string").Value = ParametrStr
            End If
            SqlConnection1.Open()
            dacmdParametrs.UpdateCommand.ExecuteNonQuery()
            SqlConnection1.Close()
        End If
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634406
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Irinka, а, знаете от чего все Ваши беды?
Просто делайте точку останова на проблемной строке, а потом с помощью F8 продвигайтесь по коду занося при необходимости в Watch интересующие Вас переменные... Глядишь и станет ясно, где спрятана ошибка. Может какая то часть кода вообще не выполняется... Или ещё что...
P.S. Это не критика, а совет... Мне, например ОЧЕНЬ помогает в решении подобного рода проблем.
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634435
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 If (dscmdParametrs.Tables( 0 ).Rows.Count =  0 ) Then
            Dim drDiscount As DataRow
            drDiscount = dscmdParametrs.Tables( 0 ).NewRow
            drDiscount.Item("parametr_name") = ParametrName
            drDiscount.Item("login_user") = myuser
            If Not IsNothing(ParametrInt) Then
                drDiscount.Item("parametr_value_int") = ParametrInt
            End If
            If Not IsNothing(ParametrDate) Then
                drDiscount.Item("parametr_value_date") = ParametrDate
            End If
            If Not IsNothing(ParametrStr) Then
                drDiscount.Item("parametr_value_string") = ParametrStr
            End If
            dscmdParametrs.Tables( 0 ).Rows.Add(drDiscount)
            SqlConnection1.Close()
Здесь, кстати, ничего и не добавиться -
1. не открыт Connection, а Вы его ещё и закрываете,
2. если уж хотите , что бы изменение отражалось в таблице, то делайте Adapter.Update(dscmdParametrs, "YourTableName"), после добавления новых строк
3. ...and etc.
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634442
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig, спасибо за совет.
Я пробегала уже строки в вотче. Но вот что интересно, я , наверное не совсем понимаю вотч Нета, в VB6 было как на ладони.
Может вы меня вразумите :)
Вот я решила проверить, а что же за таблица есть в сете и вставила в вотч такую строку
dscmdParametrs.Tables
Скажите, я должна где-то там увидеть имя таблицы или нет и какой у нее Item в сете?
Пораскрывала всевозможные плюсы и ничего подобного не видела.
Заранее спасибо.
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634448
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
Спасибо большое вам за помощь, выручили по многим вопросам :)
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634539
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу Connection, он открыт был раньше, так что с ним все нормально
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634864
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irinka
я так понимаю, вы попросили структуру таблицы (sql скрипт):

Да это и называется DDL скрипт

vladgrig
если уж хотите , что бы изменение отражалось в таблице, то делайте Adapter.Update(dscmdParametrs, "YourTableName"), после добавления новых строк

Здесь надо разделять.
Либо мы делаем Update сами вручную, либо обучаем DataAdapter делать Update.

irinka пошла путем ручного формирования запроса для Update . Поэтому DataAdapter в этой процедуре и не нужен совсем.

Во первых я не пойму для чего тут Fill и Update т.е это здесь явно лишнее:
Код: plaintext
1.
2.
3.
dacmdParametrs.Fill(dscmdParametrs)
 'bla-bla-lba 
dacmdParametrs.Update(dscmdParametrs)
Также не понятно для чего здесь такой if. В общем опишите подробно задачу применительно к этому моменту, что хотите получить в итоге, что имеем на входе.

Плюс ко всему попробуйте это:
Sa
2) Проверьте в дебаг режиме все параметры передаваемые Update. И попробуйте выполнить такой же Update на QA только уже вручную подставленными параметрами.
Код: plaintext
1.
"update tglobal set parametr_name=@parametr_name, parametr_value_int=xx, parametr_value_date=xx, parametr_value_string=xx where ........


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634883
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
vladgrig
2. если уж хотите , что бы изменение отражалось в таблице, то делайте Adapter.Update(dscmdParametrs, "YourTableName"), после добавления новых строк


можно глупый вопрос?
Чтобы сделать апдейт при встаке новой записи мне нужно дописать InsertCommand. А что нужно поставить в Values() этого команда?
мне немножко не понятно.
потому как для UpdateCommand я явно присваивала значения пар-рам, а здесь через drDiscount (который объявлен как DataRow)
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634905
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irinka
Чтобы сделать апдейт при встаке новой записи мне нужно дописать InsertCommand. А что нужно поставить в Values() этого команда?
мне немножко не понятно.
потому как для UpdateCommand я явно присваивала значения пар-рам, а здесь через drDiscount (который объявлен как DataRow)

Для UpdateCommand вы делали неправилно, чтобы посмотреть как надо делать правильно и для InsertCommand "натравите" data wizard на создание SqlDataAdapter для вашей таблицы, и выдергивайте весь получаемый код себе в процедуру, тогда сам DataAdapter будет уметь правильно формировать все запросы к СУБД, на основе данных DataSet. Т.е. строка DataAdapter.Update(myDataSet) будет уместна.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634939
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть такова:
в таблице хранится логин, имя пар-ра и время когда пользователь работал с формой (форма, на кот как раз два календаря) и эти все значения соот-но должны внестись в табл автоматически (должно быть прописано программно, над этим кодом как раз и карпеем)
Теперь что в коде:
Там есть селекткомманд, в котором как раз прописано выбрать запись при условии что login_user - это данный пользоваель, кот вошел в данную программу, и parametr_name - это имя пар-ра glbArcBeginDate или glbArcEndDate, имена пар-ров которым соот-ют значения в поле parametr_value_date (начальня и конечная даты, выбранных в календарях на форме)
Далее заполняется датасет и если запись выбрана, тогда мы ее обнавляем (т е для найденного login_user и parametr_name меняем значение parametr_value_date ), а если не найдено, то добавляем пользователя пар-ры и даты, кот он выбрал.
Соот-но сет нужен, чтоб можно было выбрать, просмотреть и обновить.
Может я не права?
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634960
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я правильо поняла, вот эта строка неправильная
dacmdParametrs.UpdateCommand.Parameters("@parametr_value_string").Value = ParametrStr
???
или самая первая часть, когда я объявляю адаптер, потом его комманды?
Я как раз смотрела по др форме и аналогично делала.
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32634986
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только я смотрела на форму, где не sqldataadapter, а oledbdataadapter
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32635018
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпо поводу Connection, он открыт был раньше, так что с ним все нормально
А, зачем здесь тогда вот это?
Код: plaintext
1.
2.
3.
4.
  
SqlConnection1.Open()
dacmdParametrs.UpdateCommand.ExecuteNonQuery()
SqlConnection1.Close()
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32635019
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
далее
я имею в виду, что не пойму что писать в InsertCommand.CommandText="insert into tglobal Values(что писать здесь)"
если я использую drDiscount или вообще так нельзя?
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32635093
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
insert into tglobal(имя_поля) Values(значение)"

Magnus
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32635118
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23


спасибо :)
но а если серьезно...
dacmdParametrs.UpdateCommand.CommandText = "update tglobal set parametr_name=@parametr_name..."

а здесь что
dacmdParametrs.UpdateCommand.CommandText = "insert into tglobal values( drDiscount.Item("parametr_name") , ...)
не так же писать

По поводу вашего уточнения...

можно писать и так:
insert into tglobal values(ла ла ла) без перечисления полей, если мы будем заносить значения во все поля, кот есть в табл
...
Рейтинг: 0 / 0
value of type 'date' cannot be converted to System.Data.SqlClient.
    #32635138
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Параментры нужны если используется хранимка, а в данном случае можно просто ставить значения

dacmdParametrs.InsertCommand.CommandText = "insert into tglobal values("& drDiscount.Item("parametr_name") , ...&")"

можно писать и так:
insert into tglobal values(ла ла ла) без перечисления полей, если мы будем заносить значения во все поля, кот есть в табл
Можно, но хорошей практикой считается указывать обновляемые поля.
Таблица ведь может изменится. Да и при дебаге удобнее, не лазить же каждый раз в базу чтобы посмотреть какие поля получают значения.

Magnus
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / value of type 'date' cannot be converted to System.Data.SqlClient.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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