Excel Import

Hi All,   I am trying to, first upload and then import excel spreadsheet into my DB.  Most of it works except that when I run the import only the first 20 item codes are imported.  The rest are blank.  It seems to be something to do with the Item Code itself.  The app imports the items code that are similar to 53074, i.e. all start with 53, but once the item codes change to 003A90002, everything there after is ignored. I have included the ability to view the uploaded Excel Document, but even that does not display the offending item codes,  I have checked that the uploaded sheet has got the item codes in and it does.Please help ASAP.Thank you 

1    Imports System.Data
2    Imports System.Data.OleDb
3    Imports System.Data.SqlClient
4    Partial Class Admin_Imports_importItems
5        Inherits System.Web.UI.Page
6   
7        Dim objConn As New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=fm_suite;Integrated Security=True")
8        Dim transactionImportItems As SqlTransaction
9   
10       Dim strSQLCountItems As String
11       Dim
strAction As String
12  
13       Protected Function
ExcelConnection() As OleDbCommand
14           Dim xConnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("~/ExcelImportItems.xls") & ";Extended Properties='Excel 8.0;hdr=Yes;FMT=CSVDelimited'"
15  
16           Dim objXConn As New OleDbConnection(xConnStr)
17           objXConn.Open()
18  
19           Dim objCommand As New OleDbCommand("
SELECT * FROM [Sheet1$]", objXConn)
20           Return objCommand
21  
22       End Function
23  
24       Protected Sub ButtonView_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonView.Click
25           pnl_Upload.Visible = False
26           pnl_View.Visible = True
27           pnl_Import.Visible = False
28  
29           Dim objDataAdapter As New OleDbDataAdapter()
30  
31           objDataAdapter.SelectCommand = ExcelConnection()
32  
33           Dim objDataSet As New DataSet()
34           objDataAdapter.Fill(objDataSet)
35  
36           gv_UploadedData.DataSource = objDataSet.Tables(0).DefaultView
37           gv_UploadedData.DataBind()
38  
39       End Sub
40  
41       Protected Sub ButtonImport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonImport.Click
42           Dim strSQLImportItems As String
43           Dim objCommand As New OleDbCommand()
44           Dim reader As OleDbDataReader
45           Dim categoryID As Integer
46           Dim supplierID As Integer
47           Dim PurchaseUOMID As Integer
48           Dim SellingUOMID As Integer
49           Dim StockUOMID As Integer
50           Dim manufacturerID As Integer
51  
52           pnl_Upload.Visible = False
53           pnl_View.Visible = False
54           pnl_Import.Visible = True
55           LabelImport.Text = ""
56  
57           objCommand = ExcelConnection()
58           reader = objCommand.ExecuteReader()
59  
60           While reader.Read()
61               Dim ItemCode As String = Convert.ToString(reader("
ItemCode"))
62               Dim ItemName As String = Convert.ToString(reader("
ItemName"))
63               Dim ItemDescription As String = Convert.ToString(reader("
ItemDescription"))
64               Dim Category As String = Convert.ToString(reader("
Category"))
65               Dim Supplier As String = Convert.ToString(reader("
Supplier"))
66               Dim Manufacturer As String = Convert.ToString(reader("
Manufacturer"))
67               Dim PurchaseUOM As String = Convert.ToString(reader("
PurchaseUOM"))
68               Dim SellingUOM As String = Convert.ToString(reader("
SellingUOM"))
69               Dim StockUOM As String = Convert.ToString(reader("
StockUOM"))
70               Dim MarkUp As Decimal = Convert.ToDecimal(reader("
MarkUp"))
71               Dim SellingPrice As Decimal
72               Dim OnHand As Integer
73               Dim Deleted As Integer
74  
75               Try
76                   objConn.Close()
77                   objConn.Open()
78                   transactionImportItems = objConn.BeginTransaction
79  
80                   'Here we are trying to establish if the itme is already in the database or not
81                   strSQLCountItems = "
"
82                   strSQLCountItems = "
SELECT ItemCode FROM Items WHERE ItemCode = N'" & ItemCode & "'"
83  
84                   Dim CountItemsCommand As New SqlCommand(strSQLCountItems, objConn, transactionImportItems)
85                   Dim CountItemsReader As SqlDataReader
86  
87                   CountItemsReader = CountItemsCommand.ExecuteReader
88                   CountItemsReader.Read()
89  
90                   If (CountItemsReader.HasRows = False) Then
91                       strAction = "Import"
92                   Else
93                       strAction = "Update"
94                   End If
95  
96                   CountItemsReader.Close()
97  
98                   GetCategoryID(Category, categoryID)
99                   GetSupplierID(Supplier, supplierID)
100                  GetManufacturerID(Manufacturer, manufacturerID)
101                  GetUnitOfMeasure(PurchaseUOM, SellingUOM, StockUOM, PurchaseUOMID, SellingUOMID, SellingUOMID)
102 
103                  If strAction = "Import" Then
104                      strSQLImportItems = "INSERT INTO Items "
105                      strSQLImportItems &= "(ItemCode, ItemName, ItemDescription, categoryID, supplierID, manufacturerID,"
106                      strSQLImportItems &= "PurchaseUOM, SellingUOM, StockUOM, LastCostPrice, AverageCostPrice, MarkUp,"
107                      strSQLImportItems &= " SellingPrice, OnHand, Deleted) "
108                      strSQLImportItems &= "VALUES"
109                      strSQLImportItems &= "(N'" & ItemCode & "', "
110                      strSQLImportItems &= "
N'" & ItemName & "', "
111                      strSQLImportItems &= "N'" & ItemDescription & "', "
112                      strSQLImportItems &= categoryID & "
,"
113                      strSQLImportItems &= supplierID & "
,"
114                      strSQLImportItems &= manufacturerID & "
, "
115                      strSQLImportItems &= PurchaseUOMID & "
, "
116                      strSQLImportItems &= SellingUOMID & "
, "
117                      strSQLImportItems &= StockUOMID & "
, "
118                      strSQLImportItems &= 0 & "
, "
119                      strSQLImportItems &= 0 & "
, "
120                      strSQLImportItems &= MarkUp & "
, "
121                      strSQLImportItems &= 0 & "
, "
122                      strSQLImportItems &= 0 & "
, "
123                      strSQLImportItems &= 0 & "
)"
124 
125                      Dim InsertItemCommand As New SqlCommand(strSQLImportItems, objConn, transactionImportItems)
126                      InsertItemCommand.ExecuteNonQuery()
127 
128                      transactionImportItems.Commit()
129 
130                      InsertItemCommand.Dispose()
131 
132                  Else
133                      strSQLImportItems = "
UPDATE Items SET "
134                      strSQLImportItems &= "
ItemName = N'" & ItemName & "', "
135                      strSQLImportItems &= "categoryID = " & categoryID & ", "
136                      strSQLImportItems &= "supplierID = " & supplierID & ", "
137                      strSQLImportItems &= "manufacturerID = " & manufacturerID & ", "
138                      strSQLImportItems &= "PurchaseUOM = " & PurchaseUOMID & ", "
139                      strSQLImportItems &= "SellingUOM = " & SellingUOMID & ", "
140                      strSQLImportItems &= "StockUOM = " & StockUOMID & ", "
141                      strSQLImportItems &= "MarkUp = " & MarkUp & ", "
142                      strSQLImportItems &= "SellingPrice = " & SellingPrice & ", "
143                      strSQLImportItems &= "OnHand = " & OnHand & ", "
144                      strSQLImportItems &= "Deleted = " & Deleted
145                      strSQLImportItems &= " WHERE ItemCode = N'" & ItemCode & "'"
146 
147                      Dim UpdateItemCommand As New SqlCommand(strSQLImportItems, objConn, transactionImportItems)
148                      UpdateItemCommand.ExecuteNonQuery()
149 
150                      transactionImportItems.Commit()
151 
152                      UpdateItemCommand.Dispose()
153                  End If
154              Catch ex As Exception
155                  Me.LabelImport.Text = strSQLImportItems & "
" & ex.Message
156              Finally
157                  transactionImportItems.Dispose()
158              End Try
159          End While
160 
161          reader.Close()
162 
163      End Sub
164 
165      Protected Sub ButtonUploadFile_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonUploadFile.Click
166          If FileUploadExcel.HasFile Then
167              Try
168                  FileUploadExcel.SaveAs(Server.MapPath("
~/ExcelImportItems.xls"))
169                  LabelUpload.Text = "
Upload File Name: " & _
170                       FileUploadExcel.PostedFile.FileName & "
<br>" & _
171                       "
Type: " & _
172                       FileUploadExcel.PostedFile.ContentType & _
173                       "
File Size: " & _
174                       FileUploadExcel.PostedFile.ContentLength & "
kb<br>"
175              Catch ex As Exception
176                  LabelUpload.Text = "
Error: " & ex.Message.ToString
177              End Try
178          Else
179              LabelUpload.Text = "
Please select a file to upload."
180          End If
181 
182      End Sub
183      Private Sub GetCategoryID(ByVal Category As String, ByRef categoryID As Integer)
184          Dim strSQLCategoryID As String
185 
186          strSQLCategoryID = "
SELECT categoryID FROM Categories WHERE Category = N'" & Category & "'"
187 
188          Dim CategoryIDCommand As New SqlCommand(strSQLCategoryID, objConn, transactionImportItems)
189          Dim CategoryIDReader As SqlDataReader
190 
191          CategoryIDReader = CategoryIDCommand.ExecuteReader
192          CategoryIDReader.Read()
193 
194          If (CategoryIDReader.HasRows = True) Then
195              categoryID = CInt(CategoryIDReader("categoryID").ToString)
196          Else
197              categoryID = -1
198          End If
199 
200          CategoryIDReader.Close()
201      End Sub
202 
203      Private Sub
GetSupplierID(ByVal Supplier As String, ByRef supplierID As Integer)
204          Dim strSQLSupplierID As String
205          strSQLSupplierID = "SELECT supplierID FROM Suppliers WHERE SupplierName =  N'" & Supplier & "'"
206 
207          Dim SupplierIDCommand As New SqlCommand(strSQLSupplierID, objConn, transactionImportItems)
208          Dim SupplierIDReader As SqlDataReader
209 
210          SupplierIDReader = SupplierIDCommand.ExecuteReader
211          SupplierIDReader.Read()
212 
213          If (SupplierIDReader.HasRows = True) Then
214              supplierID = CInt(SupplierIDReader("
supplierID").ToString)
215          Else
216              supplierID = -1
217          End If
218 
219          SupplierIDReader.Close()
220 
221      End Sub
222 
223      Private Sub GetManufacturerID(ByVal Manufacturer As String, ByRef manufacturerID As Integer)
224          Dim strSQLManufacturerID As String
225 
226          strSQLManufacturerID = "
SELECT manufacturerID FROM Manufacturers WHERE ManufacturerName = N'" & Manufacturer & "'"
227 
228          Dim ManufactrureIDCommand As New SqlCommand(strSQLManufacturerID, objConn, transactionImportItems)
229          Dim ManufactrureIDReader As SqlDataReader
230 
231          ManufactrureIDReader = ManufactrureIDCommand.ExecuteReader
232          ManufactrureIDReader.Read()
233 
234          If (ManufactrureIDReader.HasRows = True) Then
235              manufacturerID = CInt(ManufactrureIDReader("manufacturerID").ToString)
236          Else
237              manufacturerID = -1
238          End If
239 
240          ManufactrureIDReader.Close()
241 
242      End Sub
243      Private Sub
GetUnitOfMeasure(ByVal PurchaseUOM As String, ByVal SellingUOM As String, ByVal StockUOM As String, _
244                                   ByRef PurchaseUOMID As Integer, ByRef SellingUOMID As Integer, ByRef StockUOMID As Integer)
245          Dim strSQlUnitOfMeasurePurchaseUOMID, strSQlUnitOfMeasureSellingUOMID, strSQlUnitOfMeasureStockUOMID As String
246 
247          strSQlUnitOfMeasurePurchaseUOMID = "SELECT UnitOfMeasureID FROM UnitOfMeasure WHERE UnitOfMeasure =N'" & PurchaseUOM & "'"
248          strSQlUnitOfMeasureSellingUOMID = "
SELECT UnitOfMeasureID FROM UnitOfMeasure WHERE UnitOfMeasure =N'" & SellingUOM & "'"
249          strSQlUnitOfMeasureStockUOMID = "SELECT UnitOfMeasureID FROM UnitOfMeasure WHERE UnitOfMeasure =N'" & StockUOM & "'"
250 
251          Dim UnitOfMeasurePurchaseUOMIDCommand As New SqlCommand(strSQlUnitOfMeasurePurchaseUOMID, objConn, transactionImportItems)
252          Dim UnitOfMeasureSellingUOMIDCommand As New SqlCommand(strSQlUnitOfMeasureSellingUOMID, objConn, transactionImportItems)
253          Dim UnitOfMeasureStockUOMIDCommand As New SqlCommand(strSQlUnitOfMeasureStockUOMID, objConn, transactionImportItems)
254 
255          Dim UnitOfMeasurePurchaseUOMIDReader As SqlDataReader
256          Dim UnitOfMeasureSellingUOMIDReader As SqlDataReader
257          Dim UnitOfMeasureStockUOMIDReader As SqlDataReader
258 
259          UnitOfMeasurePurchaseUOMIDReader = UnitOfMeasurePurchaseUOMIDCommand.ExecuteReader
260          UnitOfMeasurePurchaseUOMIDReader.Read()
261 
262          If UnitOfMeasurePurchaseUOMIDReader.HasRows = True Then
263              PurchaseUOMID = CInt(UnitOfMeasurePurchaseUOMIDReader("
UnitOfMeasureID"))
264          Else
265              PurchaseUOMID = -1
266          End If
267 
268          UnitOfMeasurePurchaseUOMIDReader.Close()
269 
270          UnitOfMeasureSellingUOMIDReader = UnitOfMeasureSellingUOMIDCommand.ExecuteReader
271          UnitOfMeasureSellingUOMIDReader.Read()
272 
273          If UnitOfMeasureSellingUOMIDReader.HasRows = True Then
274              SellingUOMID = CInt(UnitOfMeasureSellingUOMIDReader("
UnitOfMeasureID"))
275          Else
276              SellingUOMID = -1
277          End If
278 
279          UnitOfMeasureSellingUOMIDReader.Close()
280 
281          UnitOfMeasureStockUOMIDReader = UnitOfMeasureStockUOMIDCommand.ExecuteReader
282          UnitOfMeasureStockUOMIDReader.Read()
283 
284          If UnitOfMeasureStockUOMIDReader.HasRows = True Then
285              StockUOMID = CInt(UnitOfMeasureStockUOMIDReader("
UnitOfMeasureID"))
286          Else
287              StockUOMID = -1
288          End If
289 
290          UnitOfMeasureStockUOMIDReader.Close()
291      End Sub
292  End Class

 
A user needs the administrative password like nitro-glycerine needs a good shake
0
Vexander
2/16/2009 11:19:49 AM
asp.net.object-datasource 16182 articles. 0 followers. Follow

2 Replies
880 Views

Similar Articles

[PageSpeed] 39
Get it on Google Play
Get it on Apple App Store

Hey , go to the link below, you will get the whole code with description

 http://shaikhnizam.blogspot.com/2009/02/how-to-import-ms-excell-data-to-sql.html


If this reply is answer to your question then mark this reply as Answer



Get more solutions in SQL Server, C#.Net 3.5/2.0/1.1, SharePoint

-Mohammad Nizamuddin


0
nizam133
2/16/2009 11:56:29 AM

Thank you for your quick repsonse Nizam, but that answer is not addressing the issue of why is some of the data being igored.


Thanx


A user needs the administrative password like nitro-glycerine needs a good shake
0
Vexander
2/16/2009 12:06:34 PM
Reply:

Similar Artilces:

Import excel data from Microsoft excel to SQL Server usin C sharp .net
Hi Could anyone help me with the sample code in C sharp to import data from excel to SQL server 2005 using C sharp. I have a table called Accounting Calendar ACCT_DATE with 10 columns I have the excel file called example.xls with the same column name as in SQL Server.Please help me with the sample code in C sharp Thanks      Here's a simple way to do it without the need to have excel installedhttp://davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx Hope this helpsJaime Don't forget to click "Mark as Answer" on the post that helped you. That wa...

Excel as import to vb.net?
Has anyone experimented with using excel files as import to a vb.net app? I have a user who is ... reluctant to give up his personal sheets... Thanks! MVP...

Excel Object Library in .NET
How do I import and use the Excel Object Library in .NET? Specfically I want to use the formula in .NET....

Importing complex Excel file into .Net
Greetings, I have an Excel file that has calculations galore. I want to import and have the same functionality of this file in .Net and be able to download it to an Excel file from the browser. Has anyone done this? I can export to xml but have yet to figure how to bind it to the MS Office Spreadsheet Object found in the toolbox of VB.Net. Please help :) thx and Happy Coding Ed...

Replace the .NET 1.1 Behavior-Object with the .NET 2.0 Tag-Object , How to?
Hello, to set the Style - Attribute of my custom controls tag in source view from within its designer i use now the following code:Behavior.SetStyleAttribute("Left", false, val, true);This works fine but my visual studio 2005 / asp.net 2.0 says that the Behavior object is obsolete. The recommended alternative is the Tag object. But when i use it to set the Style attribute it doesn't work . I can set all other attributes or even create new ones using this Tag object but it does'nt work for the style attribute at all. What am i doing wrong? If I can't set the style attribute in my custom contr...

Object Datasource and Custom Object
Hey, I have an object datasource that populates a detailsview.  I know how to update the changes using a BLL method like so: public static UpdateUser(string Username, string Surname); However I would like to use the objects update() method ive created that essentially calls: public static UpdateUser(User user); The question is, how do I access the fields that are contained within the details view?  im guessing .FindControl() but i dont have the ID.  the other way I suppose is to itterate through all the controls within in it?  there must be a better way though? The ...

VB.NET and Excel Application object problems
My Goal: To read/ write and access Excel files that are uploaded using the Excel.Application object The scenario: In my VB.NET project I do the following Dim oExcel As Object oExcel = CreateObject("Excel.Application") I have added the Excel.exe as the reference to the project from C:\ProgramFiles\MicrosoftOffice\Office11\Excel.exe [my local machine] I have Office 2003 runnning on my machine. NOTE: I am running the project remotely. My remote work machine has .NET installed. All files and projects are located on the server. Server does not have any...

How to Import data from Excel into MS SQL in .Net?
Hi, I'm building a web application in VB.NET 1.1 where users will upload Excel files at this webpage and the web application will transfer the data from the uploaded Excel file into MS SQL 2000. There are around 600-700 records and about 56 columns in the Excel file which is to be uploaded daily. There will be a few different files which I need to implement for as well.  I've sourced for and tried alot of methods. But either they can't satisfy my requirements or they just can't simply work. - Most simple and direct way I've tried is creating a oledb connection to...

Gridview Search Without Object Datasource Filter ParametersGridview Search Without Object Datasource Filter Parameters
Couple weeks ago I read a article about highlighted search in Gridview  (http://blog.evonet.com.au/post/2008/06/25/Gridview-with-highlighted-search-results.aspx) and in my project I used things I learned but now things changed I have a gridview and in code I give its datasource so because I dont use any objectdatasource I dont know where to write my filtering parameters. Is there anyway to use filtering without objectdatasource, or is there a way to give objectdatasource an source then bind it to my gridview. My code:  //No objectdatasource how can I conduct a search?GridView1.Da...

For Windows application in vb.net
I'm creating an Excel object in VB.Net(windows application). The following error happens: An unhandled exception of type 'System.Security.SecurityException' My code is: Dim xlApp As New Excel.Application() 'This line causes the trouble Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet xlBook = xlApp.Workbooks.Add() xlSheet = xlBook.Worksheets.AddWhat should I do in this case? Thanks in advance. It's been a while since I automated Excel, but I seem to remember this issues: Excel / Office had to be installed on the server.(ob...

Excel object close in vb.net(windows application)
In my project am using Excel. i want to close excel object.Any one give me idea.i used xlapp.quit and Marshel.ReleaseComObject(xlapp). Everthing i used. stil i have problem in object close. Hi indraraj, You can try the following method. You should release all com object, and recollect the resource by using the "GC.Collect()". public   void   GCEXCEL()     {     //collect the com componet.    if   (xlapp   !=   null)     {     if   (xlbooks   !=   null)     {     i...

does dw.net 2.x support object datasource
does dw.net 2.x support object datasource thanks vsv No. That is something we are looking at for version 3.0. Regards, Dave Fish Sybase On 3 Aug 2007 12:33:46 -0700, "vsv" <nospam@nospam.com> wrote: >does dw.net 2.x support object datasource > >thanks >vsv > with mapping to Linq & entity framework? or DatwindowObject Source by itself. thanks vsv "Dave Fish [TeamSybase]" <dfish@[N0Spam]sybase.com> wrote in message news:8u57b39g068kbrs7d8rd82f24sem4cn8dp@4ax.com... > No. That is something we are looking at ...

Is it possible to import data from excel worksheet to a datawindow object?
DW can export data to excel file( save as ), can PB import data from excel worksheet to a datawindow object? If can, how to import? Thanks a lot! Hi, users can do a save as to a tab delimited txt file in excel. use then dw_1.Importfile to import the data in a datawindow object. Look up the importfile (datawindows) function in the help file. HTH John > DW can export data to excel file( save as ), can PB > import data from excel worksheet to a datawindow object? > If can, how to import? > > Thanks a lot! > > If you are looking for an aut...

Cannot create ActiveX Object (Excel) in visual studio.net 2003
Hi. I was able to develop a program that calls on a PDF writer (Neevia.com's docuPrinter SDK at http://www.neevia.com) to open and convert a Microsoft Excel file in ASP.net WebMatrix. However, I'm supposed to make it to Visual Studio.net 2003. I was able to move all the VB codes into the pages' code-behind, but except for this thing: Private Sub createpdf(ByVal fname As String)Dim farr() As String = fname.Split(".")Dim docToConvert As String = fnameDim DPSDK As Object = CreateObject("docuPrinter.SDK")DPSDK.DocumentOutputFormat = "PDF"DPSDK.DocumentOutputName = Path.GetFileName(farr(0))...

Importing Complex Excel file into a DataGrid or MS Office Spread Object
Greetings Everyone, I have an Excel file that has calculations galore. I want to import and have the same functionality of this file in .Net and be able to download it to an Excel file from the browser. Has anyone done this? I can export to xml but have yet to figure how to bind it to the MS Office Spreadsheet Object found in the toolbox of VB.Net. Please help :) thx and Happy Coding Ed...

Web resources about - Excel Import - asp.net.object-datasource

Gaza imports - Wikipedia, the free encyclopedia
Import of goods into the Gaza Strip is limited as part of the 2007–present blockade of the Gaza Strip imposed by Israel and Egypt . Israel allows ...

Instagram 4.1 Adds Ability To Import Video, Automatic Straightening
Facebook-owned photo-sharing network Instagram released Instagram 4.1 last week, which added the ability for users to import video from their ...

Oakland Opens the Wallet for Cuban Import
Looks like Billy Beane really is sticking to that Window. After spending the offseason trading away two of the better young starting pitchers ...

Import and Publish YouTube Videos to Your Facebook Page with Cueler YouTube
Cueler is a useful and easy Facebook application that allows Page administrators to automatically synchronize their YouTube videos to their Facebook ...

Export Import Business Group
Here we are, people in the business of export and import from all over the world. I invite you people also to join for more info of the business ...

ExcelContacts Lite - Export/Import contacts to/from Excel on the App Store on iTunes
Get ExcelContacts Lite - Export/Import contacts to/from Excel on the App Store. See screenshots and ratings, and read customer reviews.

Secretary Kerry Delivers Remarks at the Export-Import Bank Annual Conference - Flickr - Photo Sharing ...
U.S. Secretary of State John Kerry delivers remarks at the Export-Import Bank Annual Conference in Washington, D.C., on April 24, 2014. [State ...

Christmases come at once for Canberra Cavalry imports at Percy households
When a Canberra Cavalry player is billeted by ground announcer Matt Percy and his family, the unofficial initiation is usually a big spoonful ...

Apple adds iPhones to Lightning to USB Camera Adapter compatibility list, photo import works under iOS ...
... reading at 9to5Mac . What do you think? Discuss "Apple adds iPhones to Lightning to USB Camera Adapter compatibility list, photo import works ...

Calls mount for boycott of Thai shrimp imports after slave labour report
US politicians and human rights groups have called for a boycott of fish and shrimp products linked to slave labour in Thailand following a report ...

Resources last updated: 1/11/2016 3:41:04 PM