2013-05-09 2 views
0

Я разрабатываю приложение управления запасами. Он используется почти 1 год. Но я решил протестировать некоторый отчет, поэтому я делаю резервную копию базы данных, которая работает в SQL Server 2008 Express. Когда я запускаю приложение im my pc, я получаю пустые строки, но когда я запускаю его в хранилище, я получаю результаты, также если я удаляю диапазон дат, он дает мне данные.C# SqlDbType.Datetime получение пустых строк

Я использую следующий код для докладов:

frmReporteSurtido repmi = new frmReporteSurtido(); 
string query = "SELECT * from [SAIV].[dbo].Vista_MovInv "; 

query = query + "WHERE (FechaHora BETWEEN @Horai AND @Horaf) and idTiposdeMovimiento=1 and Concepto='TRANSFERENCIA DE ALMACÉN'"; 

      if (!cbTS.Checked) 
       query = query + " AND SUCURSAL='" + idSucursalesComboBox.Text + "' "; 
      if (!cbTA.Checked) 
       query = query + " AND ALMACÉN='" + idAlmacenesComboBox.Text + "' "; 
      if (!cbTU.Checked) 
       query = query + " AND UBICACIÓN='" + comboBox1.Text + "' "; 

      this.DSTCON.Vista_MovInv.Clear(); 
      try 
      { 
       SqlConnection conn = new SqlConnection(clsData.strConexion); 
       SqlDataAdapter adapter = new SqlDataAdapter(); 

       adapter.SelectCommand = new SqlCommand(query, conn); 
       DateTime d1 = new DateTime(dateTimePicker1.Value.Year, dateTimePicker1.Value.Month, dateTimePicker1.Value.Day, 00, 00, 00); 
       DateTime d2 = new DateTime(dateTimePicker2.Value.Year, dateTimePicker2.Value.Month, dateTimePicker2.Value.Day, 23, 59, 59); 
       adapter.SelectCommand.Parameters.Add("@Horai",SqlDbType.DateTime).Value= d1; 
       adapter.SelectCommand.Parameters.Add("@Horaf",SqlDbType.DateTime).Value=d2; 
       adapter.Fill(DSTCON.Vista_MovInv); 
      } 
      catch (Exception ec) { DataControl.Guardar_Error(ec, this.Name); } 

      repmi.crptSurtido1.SetDataSource(this.DSTCON); 
      repmi.MdiParent = this.MdiParent; 
      repmi.Show(); 

Я думаю, что это время, дата выдачи, но я не могу найти его. Два сервера (один в магазине и другой в моем доме) имеют одинаковую сортировку. Также я меняю свои региональные настройки на своем домашнем сервере и myu pc, но ничего не происходит.

Благодарим за помощь.

+0

Ну, я не могу сказать, почему у вас такая ошибка, но я могу точно сказать, что ваше приложение плачет за SQL Injection. http://imgs.xkcd.com/comics/exploits_of_a_mom.png – Oscar

ответ

0

Возможно, у вас на компьютере есть форма datetime (language) formate с базой данных. Вы должны изменить формулу datetime на 'yyyy-MM-dd'.

+0

Я вставляю новую запись, чтобы проверить значение datime И я получаю это – user2365294

+0

, что два параметра сервера datetime - dd/MM/yyyy, мой компьютер был MM/dd/yyyy, поэтому я изменил его, но ничего не происходит. Также значение datetime в обратном порядке выглядит так: 2013-05-08 21: 05: 18.827 – user2365294

+0

вы должны установить ту же формулу времени и времени между вашим компьютером и базой данных. – Tin

0

Измените следующие строки:.

adapter.SelectCommand.Parameters.Add("@Horai",SqlDbType.DateTime).Value= d1; 
adapter.SelectCommand.Parameters.Add("@Horaf",SqlDbType.DateTime).Value=d2; 

к

adapter.SelectCommand.Parameters.Add("@Horai",SqlDbType.DateTime).Value= new SqlDateTime(d1); 
adapter.SelectCommand.Parameters.Add("@Horaf",SqlDbType.DateTime).Value= new SqlDateTeim(d2); 
+0

Извините, не работает. – user2365294

1

:(Так глупо

Ошибка здесь:

string query = "SELECT * from [SAIV].[dbo].Vista_MovInv "; 

я назвал спину вверх Я восстанавливаю:

[SAIV_TAM]; 

Так что я пытался получить информацию из базы данных без новых данных.

Также моя хранимая процедура, которая модифицирует инвентаризацию, указывала на мою базу данных разработки, а не на резервную копию, и поскольку база данных на моем рабочем месте и в моем доме имеет одно и то же имя, я сталкиваюсь с проблемой при ее переименовании.

Спасибо за вашу помощь и извините за мою немоту.

Смежные вопросы