У меня есть таблица с датами и различными данными об этой дате.
WKDWKDDATE8 WKDDAYNM WKDAGENO WKDDAYNO WKDDATE6 WEEKNO WEEKRANGE AWEEK
2019-05-15 WEDNESDAY 43580 3 AJ0515 384 05/12 - 05/18 NULL
2019-05-16 THURSDAY 43581 4 AJ0516 384 05/12 - 05/18 NULL
а вот как выглядит мой стол
CREATE TABLE [dbo].[WKD](
[WKDDATE8] [date] NOT NULL,
[WKDDAYNM] [varchar](10) NOT NULL,
[WKDAGENO] [int] NULL,
[WKDDAYNO] [int] NULL,
[WKDDATE6] [varchar](6) NOT NULL,
[WEEKNO] [int] NULL,
[WEEKRANGE] [varchar](20) NULL,
[AWEEK] [varchar](1) NULL,
как видите, мое поле WKDDATE8
равно Date
. В моем приложении C# я использую tableadaptors
для запроса этой таблицы с помощью WKDDATE8 с использованием SELECT * FROM WKD WHERE WKDDATE8 = @WKDDATE8
, но по какой-то причине моей таблице требуется строка http://imgur.com/a/cO5FA .
теперь, это где это получает fustrating. Я могу вручную изменить конструктор со строки на дату и время и запустить, он работает нормально, но затем я запускаю его снова и получаю ошибку сборки, потому что запрос требует строку, ОДНАКО, если я позволю ему идти как строка, я получаю очевидно cannot convert from 'System.DateTime' to 'string'
.
я совершенно ошеломлен и потерян, почему моя программа хочет строку.
E: это код, который вызывает у меня проблемы. я не писал этот код, он был сгенерирован. менять его бессмысленно, так как он изменится обратно во второй сборке, и я вижу, как он преобразует мой столбец в строку, когда на самом деле этого не должно быть.
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
[global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
[global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
public virtual CACTUSDataSet.WKDDataTable GetDataByWKD8(string WKDDATE8) {
this.Adapter.SelectCommand = this.CommandCollection[1];
if ((WKDDATE8 == null)) {
throw new global::System.ArgumentNullException("WKDDATE8");
}
else {
this.Adapter.SelectCommand.Parameters[0].Value = ((string)(WKDDATE8));
}
CACTUSDataSet.WKDDataTable dataTable = new CACTUSDataSet.WKDDataTable();
this.Adapter.Fill(dataTable);
return dataTable;
}
System.DateTime
, как и должно быть - person Multinerd   schedule 01.08.2016TableAdapter
, вGetDataByWKD8
в параметрах, если тип параметра@WKDDATE8
NVARCHAR
илиCHAR
, измените его наDateTime
. - person Reza Aghaei   schedule 01.08.2016Date
, подумал, что я изменил его наDateTime
, как вы упомянули, и кажется, что это было причиной. Обрабатывает ли VSDate
как строку? как-то странно, если это так. если вам нужна репутация, пожалуйста, сделайте репост в качестве ответа. Спасибо за вашу помощь - person Multinerd   schedule 01.08.2016