2017-08-28 123 views
0

我有一個DataGridView,顯示從我的SQL一個表,但它有一些blankspaces,你可以在這個截圖中看到:刪除空格從列在數據庫

enter image description here

,我想知道,如果它是可以刪除這些空白。我已經試過了這個:

SqlCommand objcmd1 = new SqlCommand("UPDATE dbo.UXMenu SET TransDocument = 
RTRIM(TransDocument) WHERE Estado = 0", myConnection); 
objcmd1.ExecuteNonQuery(); 

但是不是刪除空格而是刪除整行。

這裏是我的代碼,用於在datagridview中顯示數據,如果您想了解更多關於代碼的細節,請隨時查詢。

InitializeComponent(); 
SqlConnection myConnection = new SqlConnection(@"Data source = ****;Database=****; User Id=****; Password=****"); 
myConnection.Open(); 
SqlCommand objcmd = new SqlCommand("SELECT TransDocument, TransSerial, 
TransDocNumber, PartyName, PartyLocalityID, TotalAmount, ShipToPostalCode FROM dbo.UXMenu WHERE Estado = 0", myConnection); 
objcmd.ExecuteNonQuery(); 
SqlDataAdapter adp = new SqlDataAdapter(objcmd); 
DataTable dt = new DataTable(); 
adp.Fill(dt); 
dataGridView1.DataSource = dt; 
dataGridView1.AutoSizeColumnsMode = 
DataGridViewAutoSizeColumnsMode.DisplayedCells; 

UPDATE 1:

我補充說我用於創建表的代碼

SqlCommand command = new SqlCommand("IF OBJECT_ID('UXMenu', 'U') IS NULL CREATE TABLE UXMenu(TransDocument char(5), TransSerial char(5), TransDocNumber float PRIMARY KEY, PartyName char(60), PartyLocalityID char(5), TotalAmount char (25), ShipToPostalCode char(35), Estado int);", myConnection); 

更新2:

添加創建該文本文件的代碼

if (dataGridViewEnviarDados.SelectedRows.Count > 0) 
{ 
foreach (DataGridViewRow r in dataGridViewEnviarDados.SelectedRows) 
    { 
    var transactionHandler = new TransactionHandler(); 
    FileInfo arquivo = new FileInfo(@"C:\Users\HP8200\Desktop\faturas\" + r.Cells[0].Value.ToString() + r.Cells[1].Value.ToString() + r.Cells[2].Value.ToString() + ".txt");      
    using (TextWriter tw = new StreamWriter(arquivo.FullName, false, Encoding.Default)) 
    { 
     foreach (DataGridViewColumn c in dataGridViewEnviarDados.Columns) 
    { 
    tw.Write(r.Cells[c.Name].Value.ToString() + ";"); 
    } 
    tw.Close(); 
    } 
} 
} 

更新3:

改變了我的代碼如下:

SqlCommand command = new SqlCommand("IF OBJECT_ID('UXMenu', 'U') IS NULL CREATE TABLE UXMenu(TransDocument varchar(5), TransSerial varchar(5), TransDocNumber float PRIMARY KEY, PartyName varchar(60), PartyLocalityID varchar(5), TotalAmount varchar(25), ShipToPostalCode varchar(35), Estado int);", conn); 

現在我的表是這樣的:

enter image description here

+0

標籤您正在使用的數據庫管理系統。 (例如,RTRIM是特定於產品的。) – jarlh

+3

我在此屏幕截圖中看不到空白區域。 – Whencesoever

+0

@Whencesseverever E.g.在TransDocument和TransSeries之間有很多空格 –

回答

1

我需要改變我的charsvarchar,做這樣的事情:

SqlCommand command = new SqlCommand("IF OBJECT_ID('UXMenu', 'U') IS 
NULL CREATE TABLE UXMenu(TransDocument varchar(5), TransSerial 
varchar(5), TransDocNumber float PRIMARY KEY, PartyName varchar(60), 
PartyLocalityID varchar(5), TotalAmount varchar(25), ShipToPostalCode 
varchar(35), Estado int);", conn); 
2

您正在使用char數據類型 - 這將創建一個列總是那個長度,所以通過做char(35)你說「創建一個35字符寬的列,即使我只放2個字符」。

您可能想要varchar這是一個可變字符長度字段。

+0

感謝您的建議,我會試試這個 –

+1

如果使用多語言數據庫,請使用nvarchar。 – Amit

+0

我已更新我的問題,請檢查它 –