Я пытаюсь преобразовать мое приложение vb.net в C #, но когда я преобразовал код, чтобы проверить, находится ли ячейка даты между двумя датами devexpress, он запустит следующий код, но, к сожалению, я получил сообщение об ошибке, котороесказал:
Оператор '<=' не может быть применен к операндам типа 'объект' и 'объект' </p>
Я искал в Интернете, но не могу найти решение длямоя проблема
Вот мой код C #:
foreach (DataRowView dr in Logs_Grid.Items)
{
SqlCommand cmd2 = new SqlCommand();
SqlDataReader rd2;
DataSet ds2 = new DataSet();
// Dim CustomerIDfromtheTbl
ds2.Clear();
cmd2.Connection = conn;
// SELECT TOP 1 WITH TIES * FROM International ORDER BY News_ID DESC
cmd2.CommandText = "SELECT * FROM att_download where Machine_IP = '" + IP_txt.Text + "' and User_ID = '" + dr[0] + "' and Verify_Date = '" + Format(Convert.ToDateTime(dr[1]), ("yyyy-MM-dd")) + "' and Verify_Time = '" + Format(Convert.ToDateTime(dr[2]), "HH:mm:ss") + "' ";
rd2 = cmd2.ExecuteReader();
// SELECT ID FROM INVOICE_HEAD ORDER BY ID DESC LIMIT 1
if (rd2.HasRows)
{
rd2.Read();
// MessageBox.Show("موجود مسبقا" + " " + rd2.Item("User_ID").ToString)
rd2.Close();
}
else if (dr[1] >= From_Date.EditValue && dr[1] <= To_Date.EditValue)
{
SqlCommand cmd4 = new SqlCommand();
SqlDataReader rd4;
DataSet ds4 = new DataSet();
// Dim CustomerIDfromtheTbl
ds4.Clear();
cmd4.Connection = conn;
// SELECT TOP 1 WITH TIES * FROM International ORDER BY News_ID DESC
cmd4.CommandText = "select * from Att_Users where user_code ='" + dr[0] + "' and machine_ip ='" + IP_txt.Text + "'";
rd4 = cmd4.ExecuteReader();
// SELECT ID FROM INVOICE_HEAD ORDER BY ID DESC LIMIT 1
if (rd4.HasRows)
{
rd4.Read();
string sqlString = "insert into att_download (User_ID,Verify_Date,Verify_Time,Verify_Type,Verify_State,WorkCode,CREATE_USER,CREATE_DATE,CREATE_TIME,User_Name,Emp_Code,Machine_IP) "
+ "values (@User_ID,@Verify_Date,@Verify_Time,@Verify_Type,@Verify_State,@WorkCode,@CREATE_USER,@CREATE_DATE,@CREATE_TIME,@User_Name,@Emp_Code,@Machine_IP)";
using (SqlCommand cmd = new SqlCommand(sqlString, conn))
{
DateTime now = DateTime.Now;
cmd.Parameters.Add(new SqlParameter("@User_ID", dr[0]));
cmd.Parameters.Add(new SqlParameter("@Verify_Date", dr[1]));
cmd.Parameters.Add(new SqlParameter("@Verify_Time", dr[2]));
cmd.Parameters.Add(new SqlParameter("@Verify_Type", dr[3]));
cmd.Parameters.Add(new SqlParameter("@Verify_State", dr[4]));
cmd.Parameters.Add(new SqlParameter("@WorkCode", dr[5]));
cmd.Parameters.Add(new SqlParameter("@CREATE_USER", Main_UserName));
cmd.Parameters.Add(new SqlParameter("@CREATE_DATE", DateTime.Today.ToString("yyyy-MM-dd")));
cmd.Parameters.Add(new SqlParameter("@CREATE_TIME", now.ToString("HH:mm:ss")));
cmd.Parameters.Add(new SqlParameter("@User_Name", rd4["user_name"]));
cmd.Parameters.Add(new SqlParameter("@Emp_Code", rd4["Emp_Code"]));
cmd.Parameters.Add(new SqlParameter("@Machine_IP", IP_txt.Text));
cmd.ExecuteNonQuery();
}
rd4.Close();
}
}
, а вот код vb.net:
For Each dr As DataRowView In Logs_Grid.Items
Dim cmd2 As New SqlCommand
Dim rd2 As SqlDataReader
Dim ds2 As New DataSet
'Dim CustomerIDfromtheTbl
ds2.Clear()
cmd2.Connection = conn
'SELECT TOP 1 WITH TIES * FROM International ORDER BY News_ID DESC
cmd2.CommandText = "SELECT * FROM att_download where Machine_IP = '" & IP_txt.Text & "' and User_ID = '" & dr(0) & "' and Verify_Date = '" & Format(Convert.ToDateTime(dr(1)), ("yyyy-MM-dd")) & "' and Verify_Time = '" & Format(Convert.ToDateTime(dr(2)), "HH:mm:ss") & "' "
rd2 = cmd2.ExecuteReader
'SELECT ID FROM INVOICE_HEAD ORDER BY ID DESC LIMIT 1
If rd2.HasRows Then
rd2.Read()
'MessageBox.Show("موجود مسبقا" + " " + rd2.Item("User_ID").ToString)
rd2.Close()
Else
If dr(1) >= From_Date.EditValue And dr(1) <= To_Date.EditValue Then
Dim cmd4 As New SqlCommand
Dim rd4 As SqlDataReader
Dim ds4 As New DataSet
'Dim CustomerIDfromtheTbl
ds4.Clear()
cmd4.Connection = conn
'SELECT TOP 1 WITH TIES * FROM International ORDER BY News_ID DESC
cmd4.CommandText = "select * from Att_Users where user_code ='" & dr(0) & "' and machine_ip ='" & IP_txt.Text & "'"
rd4 = cmd4.ExecuteReader
'SELECT ID FROM INVOICE_HEAD ORDER BY ID DESC LIMIT 1
If rd4.HasRows Then
rd4.Read()
Dim sqlString As String = "insert into att_download (User_ID,Verify_Date,Verify_Time,Verify_Type,Verify_State,WorkCode,CREATE_USER,CREATE_DATE,CREATE_TIME,User_Name,Emp_Code,Machine_IP) " _
& "values (@User_ID,@Verify_Date,@Verify_Time,@Verify_Type,@Verify_State,@WorkCode,@CREATE_USER,@CREATE_DATE,@CREATE_TIME,@User_Name,@Emp_Code,@Machine_IP)"
Using cmd As SqlCommand = New SqlCommand(sqlString, conn)
cmd.Parameters.Add(New SqlParameter("@User_ID", dr(0)))
cmd.Parameters.Add(New SqlParameter("@Verify_Date", dr(1)))
cmd.Parameters.Add(New SqlParameter("@Verify_Time", dr(2)))
cmd.Parameters.Add(New SqlParameter("@Verify_Type", dr(3)))
cmd.Parameters.Add(New SqlParameter("@Verify_State", dr(4)))
cmd.Parameters.Add(New SqlParameter("@WorkCode", dr(5)))
cmd.Parameters.Add(New SqlParameter("@CREATE_USER", Main_UserName))
cmd.Parameters.Add(New SqlParameter("@CREATE_DATE", Format(Date.Today, ("yyyy-MM-dd"))))
cmd.Parameters.Add(New SqlParameter("@CREATE_TIME", Format(TimeOfDay, "hh:mm:ss")))
cmd.Parameters.Add(New SqlParameter("@User_Name", rd4.Item("user_name").ToString))
cmd.Parameters.Add(New SqlParameter("@Emp_Code", rd4.Item("Emp_Code").ToString))
cmd.Parameters.Add(New SqlParameter("@Machine_IP", IP_txt.Text))
cmd.ExecuteNonQuery()
End Using
rd4.Close()
End If
End If
End If
Next
ошибка генерируется из этой строки:
else if (dr[1] >= From_Date.EditValue && dr[1] <= To_Date.EditValue)
код XAML:
<DataGrid x:Name="Logs_Grid" IsReadOnly="True" SelectionUnit="FullRow" AutoGenerateColumns="False" CanUserAddRows="True" Margin="138,179,10,10">
<DataGrid.Resources>
<Style BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#F78A09" />
<Setter Property="Foreground" Value="#F0F0F0" />
</Style>
<Style TargetType="ScrollBar" >
<Setter Property="Background" Value="#FAFAFA" />
</Style>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#360E05"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="كوده بالجهاز" x:Name="UserID" IsReadOnly="True" Binding="{Binding Path=UserID}" Foreground="#F0F0F0"/>
<DataGridTextColumn Header="تاريخ البصمة" x:Name="VerifyDate" IsReadOnly="True" Binding="{Binding Path=VerifyDate}" Foreground="#F0F0F0" />
<DataGridTextColumn Header="توقيت البصمة" x:Name="VerifyTime" IsReadOnly="True" Binding="{Binding Path=VerifyTime}" Foreground="#F0F0F0"/>
<DataGridTextColumn Header="نوع البصمة" x:Name="VerifyType" IsReadOnly="True" Binding="{Binding Path=VerifyType}" Foreground="#F0F0F0"/>
<DataGridTextColumn Header="حالة البصمة" x:Name="VerifyState" IsReadOnly="True" Binding="{Binding Path=VerifyState}" Foreground="#F0F0F0"/>
<DataGridTextColumn Header="كود العمل" x:Name="WorkCode" IsReadOnly="True" Binding="{Binding Path=WorkCode}" Foreground="#F0F0F0"/>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" >
<Setter Property="Background" Value="#8CB3EF"></Setter>
</Style>
</DataGrid.RowStyle>
</DataGrid>
<dxe:DateEdit x:Name="From_Date" HorizontalAlignment="Left" Margin="10,251,0,0" VerticalAlignment="Top" Width="120"/>
<dxe:DateEdit x:Name="To_Date" HorizontalAlignment="Left" Margin="10,314,0,0" VerticalAlignment="Top" Width="120"/>