Microsoft Excel cannot access the file 'FilePath'. There are several possible reasons:
• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.
Bu hatanın çözümünün hata açıklamasıyla hiçbir alakası yok. Aşağıdaki klasörler oluşturulduğunda sorun çözülüyor. Genellikle 64bit sistemlerde, 32 bit uyumlu Excel Interop kullanılıyorsa bu sorunla karşılaşılıyor.
x64: Aşağıda belirtilen klasör yolunu oluşturun.
C:\Windows\SysWOW64\config\systemprofile\Desktop
x86: Aşağıda belirtilen klasör yolunu oluşturun.
C:\Windows\System32\config\systemprofile\Desktop
Wednesday, July 20, 2016
"There is already an open DataReader associated with this Command which must be closed first." hatası
Bu hatanın bir diğer çözümü:
Connection string değerine MultipleActiveResultSets=true; ibaresini eklemek.
Örnek:
Data Source=SUNUCU;Initial Catalog=MyDB;User ID=KULLANICIADI;Password=SIFRE;Connection Timeout=10;MultipleActiveResultSets=true;
Connection string değerine MultipleActiveResultSets=true; ibaresini eklemek.
Örnek:
Data Source=SUNUCU;Initial Catalog=MyDB;User ID=KULLANICIADI;Password=SIFRE;Connection Timeout=10;MultipleActiveResultSets=true;
Datatable üzerinde sayfalama işlemi
'Sayfada görüntülenecek kayıt sayısı
Dim pageSize As Integer = 1000
Dim skipNumber As Integer = 0
If pageNo < 1 Then
skipNumber = 0
Else
skipNumber = (pageNo - 1) * PageSize
End If
MyDatatable'ın dolu olduğunu düşünürsek ekran üzerinden aktarılacak pageNo üzerinden pageSize adet kadar kaydın DataGridView kontrolü üzerinde görüntülenmesi sağlanır.
Dim pageDT as Datatable=Nothing
Try
If MyDatatable.Rows.Count > 0 Then
pageDT = QueryDatatable.AsEnumerable().Skip(skipNumber).Take(PageSize).CopyToDataTable()
Else
pageDT = New DataTable
End If
Catch ex As Exception
pageDT = New DataTable
End Try
DataGridView.DataSource=pageDT
'How to paging datatable
Dim pageSize As Integer = 1000
Dim skipNumber As Integer = 0
If pageNo < 1 Then
skipNumber = 0
Else
skipNumber = (pageNo - 1) * PageSize
End If
MyDatatable'ın dolu olduğunu düşünürsek ekran üzerinden aktarılacak pageNo üzerinden pageSize adet kadar kaydın DataGridView kontrolü üzerinde görüntülenmesi sağlanır.
Dim pageDT as Datatable=Nothing
Try
If MyDatatable.Rows.Count > 0 Then
pageDT = QueryDatatable.AsEnumerable().Skip(skipNumber).Take(PageSize).CopyToDataTable()
Else
pageDT = New DataTable
End If
Catch ex As Exception
pageDT = New DataTable
End Try
DataGridView.DataSource=pageDT
'How to paging datatable
SQL Bulk Copy ile datatable daki veriyi veritabanındaki bir tabloya aktarma
Dim dtVender As New DataTable()
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
Dim vRow As DataRow = dtVender.NewRow()
vRow.Item(0) = dsID
vRow.Item(1) = vender_no
vRow.Item(2) = sku_id
dtVender.Rows.Add(vRow)
Datatable'ı doldurduktan sonra aşağıdaki metodu kullanarak datatable içerisindeki verileri "tbl_Vender" tablosuna aktarabilirsiniz.
SQLBulkCopyToTable(dtVender, "tbl_Vender")
Private Sub SQLBulkCopyToTable(ByRef sourceDT As DataTable, destinationTableName As String)
Try
Using cn As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString").ToString())
cn.Open()
If sourceDT.Rows.Count > 0 Then
Using copy As New SqlBulkCopy(cn)
copy.DestinationTableName = destinationTableName
copy.BulkCopyTimeout = 5000
copy.BatchSize = 5000
copy.WriteToServer(sourceDT)
End Using
End If
End Using
Catch ex As Exception
End Try
End Sub
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
Dim vRow As DataRow = dtVender.NewRow()
vRow.Item(0) = dsID
vRow.Item(1) = vender_no
vRow.Item(2) = sku_id
dtVender.Rows.Add(vRow)
Datatable'ı doldurduktan sonra aşağıdaki metodu kullanarak datatable içerisindeki verileri "tbl_Vender" tablosuna aktarabilirsiniz.
SQLBulkCopyToTable(dtVender, "tbl_Vender")
Private Sub SQLBulkCopyToTable(ByRef sourceDT As DataTable, destinationTableName As String)
Try
Using cn As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString").ToString())
cn.Open()
If sourceDT.Rows.Count > 0 Then
Using copy As New SqlBulkCopy(cn)
copy.DestinationTableName = destinationTableName
copy.BulkCopyTimeout = 5000
copy.BatchSize = 5000
copy.WriteToServer(sourceDT)
End Using
End If
End Using
Catch ex As Exception
End Try
End Sub
Wednesday, December 23, 2015
Şifre değerini SecureString'e Dönüştürme
Şifre değerini SecureString'e Dönüştürme
Public Shared Function ConvertToSecureString(strPassword As String) As SecureString
Dim secureStr = New SecureString()
If strPassword.Length > 0 Then
For Each c In strPassword.ToCharArray()
secureStr.AppendChar(c)
Next
End If
Return secureStr
End Function
Public Shared Function ConvertToSecureString(strPassword As String) As SecureString
Dim secureStr = New SecureString()
If strPassword.Length > 0 Then
For Each c In strPassword.ToCharArray()
secureStr.AppendChar(c)
Next
End If
Return secureStr
End Function
Wednesday, December 16, 2015
SQL Server'da bir tabloya ait kolon bilgilerinin alınması. 3 farklı seçenek.
SQL Server'da bir tabloya ait kolon bilgilerinin alınması. 3 farklı seçenek.
Seçenek 1:
Seçenek 1:
SELECT ISNULL(COL.COLUMN_NAME,'') as Name
,ISNULL(COL.DATA_TYPE, '') as Type
,ISNULL(COL.NUMERIC_SCALE,0) as
Numeric_Scale
,ISNULL(COL.NUMERIC_PRECISION, 0) as Precision
,ISNULL(COL.CHARACTER_MAXIMUM_LENGTH,
0) as
LenStr
,CASE WHEN ISNULL(KEYCOLUSE.COLUMN_NAME,'0') = '0' THEN 0 ELSE 1 END as
isPrimaryKey
FROM INFORMATION_SCHEMA.COLUMNS as COL
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE as
KEYCOLUSE
ON KEYCOLUSE.TABLE_NAME = COL.TABLE_NAME
AND KEYCOLUSE.COLUMN_NAME = COL.COLUMN_NAME
WHERE COL.TABLE_NAME = 'TableName'
AND
COL.TABLE_SCHEMA =
'dbo'
ORDER BY COL.ORDINAL_POSITION
Seçenek 2:
SELECT C.name AS Name,
T.name AS Type,
ISNULL(C.scale, 0) AS Numeric_Scale,
ISNULL(C.precision, 0) AS Precision,
(CASE WHEN
T.name LIKE '%char%' THEN ISNULL(C.max_length, 0) ELSE 0 END) AS LenStr,
(CASE WHEN
ISNULL(P.column_id,0)>0 THEN 1 ELSE 0 END) As isPrimaryKey
FROM sys.columns AS C
LEFT JOIN (
SELECT ic.object_id, ic.column_id
FROM sys.indexes AS i INNER JOIN
sys.index_columns AS ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE i.is_primary_key
= 1
) AS P ON C.object_id = P.object_id AND C.column_id = P.column_id
INNER JOIN sys.types T on T.system_type_id = C.system_type_id
WHERE OBJECT_NAME(C.object_id) = 'TableName'
ORDER BY C.column_id
Seçenek 3:
SELECT C.id,C.name AS Name,
T.name AS Type,
ISNULL(C.scale, 0) AS Numeric_Scale,
ISNULL(C.prec, 0) AS Precision,
(CASE WHEN
LOWER(T.name) LIKE '%char%' THEN ISNULL(C.length, 0) ELSE 0 END) AS LenStr,
(CASE WHEN
ISNULL(P.colid,0)>0 THEN 1 ELSE 0 END) As isPrimaryKey
FROM syscolumns AS C
LEFT JOIN (
SELECT ic.id, ic.colid
FROM sysindexkeys
AS ic
) AS P ON C.id = P.id AND C.colid = P.colid
INNER JOIN systypes T on T.xtype = C.xtype AND T.status=0
WHERE OBJECT_NAME(C.id) = 'TableName'
ORDER BY C.colorder
* How to find out column names of a table in SQL Server
* How to find out column names of a table in SQL Server
Subscribe to:
Posts (Atom)