0

Web アプリケーションに Excel ファイルをアップロードしています。ファイルがアップロードされると、ファイルが開かれ、データが mysql テーブルにインポートされます。情報を適切に追加するという点で、正常に機能します。ただし、コードに問題があり、重複チェックが正しく機能しません。これの一部は、使用される Excel シートに一意の識別子として使用できる列がないためです。Excelシートで数回、情報は行全体で完全に同一であり、1つまたは2つの列だけが異なります...私は次のようなことができると考えていました:Select * FROM table_name WHERE table_col_1 = variable and table_col_2 = variable 2など...

これを行うことで、行のすべての列の値をインポート値と比較でき、同じ場合はスキップできると考えています...しかし、私はそれを理解することはできません...多分私は考えていますこれを行う簡単な方法があります。以下は私が使用している機能です:

            Private Function PerFormUpdate(ByVal customer As String, ByVal bill_to As String, ByVal Contact As String, ByVal Company As String, ByVal firstName As String, ByVal mi As String, ByVal lastname As String, ByVal phone As String, ByVal altPhone As String, ByVal fax As String)
        Dim _db As New schoolEntities

        Dim command As MySqlCommand = _dbconn.CreateCommand()
        command.Parameters.AddWithValue("@Customer", customer)
        command.Parameters.AddWithValue("@Bill_to", bill_to)
        command.Parameters.AddWithValue("@Contact", Contact)
        command.Parameters.AddWithValue("@Company", Company)
        command.Parameters.AddWithValue("@First_Name", firstName)
        command.Parameters.AddWithValue("@M_I", mi)
        command.Parameters.AddWithValue("@Last_Name", lastname)
        command.Parameters.AddWithValue("@Phone", phone)
        command.Parameters.AddWithValue("@Alt_Phone", altPhone)
        command.Parameters.AddWithValue("@Fax", fax)

        command.CommandText = "SELECT * FROM quickbooks_imports WHERE Customer=@Customer, Bill_to=@Bill_to, Contact=@Contact, Company =@Company, First_Name=@First_Name, M_I=@M_I,  Last_Name=@Last_Name, Phone =@Phone, Alt_Phone=@Alt_Phone, Fax=@Fax"

        _dbconn.Open()

        Dim _mysqlReader As MySqlDataReader = command.ExecuteReader()
        _dbconn.Close()

        If Not _mysqlReader.HasRows Then
            Dim _UpdateItem As New quickbooks_imports
            Dim updateCommand As MySqlCommand = _dbconn.CreateCommand()

            _UpdateItem.Customer = customer
            _UpdateItem.Bill_to = bill_to
            _UpdateItem.Contact = Contact
            _UpdateItem.Company = Company
            _UpdateItem.First_Name = firstName
            _UpdateItem.M_I = mi
            _UpdateItem.Last_Name = lastname
            _UpdateItem.Phone = phone
            _UpdateItem.Alt_Phone = altPhone
            _UpdateItem.Fax = fax

            updateCommand.CommandText = "INSERT INTO quickbooks_imports (Customer,Bill_to,Contact,Company,First_Name,M_I,Last_Name,Phone,Alt_Phone,Fax) VALUES (@Customer, @Bill_to, @Contact, @Company, @First_Name, @M_I, @Last_Name, @Phone, @Alt_Phone, @Fax)"
            updateCommand.Parameters.AddWithValue("@Customer", _UpdateItem.Customer)
            updateCommand.Parameters.AddWithValue("@Bill_to", _UpdateItem.Bill_to)
            updateCommand.Parameters.AddWithValue("@Contact", _UpdateItem.Contact)
            updateCommand.Parameters.AddWithValue("@Company", _UpdateItem.Company)
            updateCommand.Parameters.AddWithValue("@First_Name", _UpdateItem.First_Name)
            updateCommand.Parameters.AddWithValue("@M_I", _UpdateItem.M_I)
            updateCommand.Parameters.AddWithValue("@Last_Name", _UpdateItem.Last_Name)
            updateCommand.Parameters.AddWithValue("@Phone", _UpdateItem.Phone)
            updateCommand.Parameters.AddWithValue("@Alt_Phone", _UpdateItem.Alt_Phone)
            updateCommand.Parameters.AddWithValue("@Fax", _UpdateItem.Fax)



            'updateCommand.CommandText = "INSERT INTO EXCEL (id,Customer,Bill_to,Contact,Company,First_Name,M_I,Last_Name,Phone,Alt_Phone,Fax) VALUES ('" & _UpdateItem.id & "','" & _UpdateItem.Customer & "','" & _UpdateItem.Bill_to & "','" & _UpdateItem.Contact & "','" & _UpdateItem.Company & "','" & _UpdateItem.First_Name & "','" & _UpdateItem.M_I & "','" & _UpdateItem.Last_Name & "','" & _UpdateItem.Phone & "','" & _UpdateItem.Alt_Phone & "','" & _UpdateItem.Fax & "') ON DUPLICATE KEY UPDATE Customer= '" & _UpdateItem.Customer & "' Bill_to= '" & _UpdateItem.Bill_to & "' Contact= '" & _UpdateItem.Contact & "' Company= '" & _UpdateItem.Company & "' First_Name= '" & _UpdateItem.First_Name & "' M_I= '" & _UpdateItem.M_I & "' Last_Name= '" & _UpdateItem.Last_Name & "' Phone= '" & _UpdateItem.Phone & "' Alt_Phone= '" & _UpdateItem.Alt_Phone & "' Fax= '" & _UpdateItem.Fax & "'"
            'updateCommand.CommandText = "INSERT INTO quickbooks_imports (Customer,Bill_to,Contact,Company,First_Name,M_I,Last_Name,Phone,Alt_Phone,Fax) VALUES ('" & _UpdateItem.Customer & "','" & _UpdateItem.Bill_to & "','" & _UpdateItem.Contact & "','" & _UpdateItem.Company & "','" & _UpdateItem.First_Name & "','" & _UpdateItem.M_I & "','" & _UpdateItem.Last_Name & "','" & _UpdateItem.Phone & "','" & _UpdateItem.Alt_Phone & "','" & _UpdateItem.Fax & "') "
            _dbconn.Open()
            Try
                updateCommand.ExecuteNonQuery()
            Catch ex As Exception
                Dim _error As String = Nothing
                MsgBox(ex.Message)
            End Try


            _db.SaveChanges()
        Else
            Dim _NewItem As New quickbooks_imports
            _NewItem.Customer = customer
            _NewItem.Bill_to = bill_to
            _NewItem.Contact = Contact
            _NewItem.Company = Company
            _NewItem.First_Name = firstName
            _NewItem.M_I = mi
            _NewItem.Last_Name = lastname
            _NewItem.Phone = phone
            _NewItem.Alt_Phone = altPhone
            _NewItem.Fax = fax
            _db.quickbooks_imports.AddObject(_NewItem)
            _db.SaveChanges()
        End If
        _dbconn.Close()
        Return View()
    End Function

どんな助けでも大歓迎です...

4

2 に答える 2

0

Excel から別のテーブル (おそらく一時テーブル) にデータを挿入してから、必要なデータを追加のテーブルからターゲット テーブルにコピーします。

INSERT INTO table1 SELECT DISTINCT * FROM temp_table;
于 2011-09-29T07:34:03.923 に答える
0
declare @tempExist varchar(50);
set @tempExist=null;

select @tempExist=[ColumnName1] from [TableName]
where [ColumnName1]=@ColumnName1 or [ColumnName2]= @ColumnName2  and so on..

if(@tempExist!=NULL)
Begin
Insert into [TableName] (...)
End

上記のコードは mssql 用です..いくつかの構文が間違っている可能性があります..しかし、それは私が考えていることです..

しかし、これはヒントを与えるかもしれません..頑張ってください!!

于 2011-09-29T01:21:46.023 に答える