Ошибка WPF: оператор «<=» не может быть применен к операндам типа «объект» и «объект» - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь преобразовать мое приложение 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"/>

1 Ответ

0 голосов
/ 17 декабря 2018

Если вы включите Option Strict On в VB, вы получите ту же ошибку.Когда Option Strict выключен, VB пытается преобразовать переменную для вас, C # не делает этого.Вам нужно привести вашу переменную к нужному типу данных.Что-то вроде:

else if ((DateTime)dr[1] >= From_Date.EditValue && (DateTime)dr[1] <= To_Date.EditValue)

Или используйте метод для получения правильной переменной

else if (dr.GetDateTime(1) >= From_Date.EditValue && dr.GetDateTime(1) <= To_Date.EditValue)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...