2015-06-23 21 views
1

我已经创建了一个宏,它搜索今年所有参加培训的员工。 我在SQL很弱,我需要somebodys的帮助。如何将数据从记录集加载到单独的列中?

目前我的微距作品是这样,它在它创建在Excel 3列,并加载所有数据

Name||First Name||TrainingName 
Employee1.Name||Employee1.FirstName||TrainingName1 
Employee1.Name||Employee1.FirstName||TrainingName2 
Employee2.Name||Employee2.FirstName||TrainingName1 
Employee3.Name||Employee3.FirstName||TrainingName1 

我想,该数据将显示如下:

Name||First Name||TrainingName1||TrainingName2 etc.. 
Employee1.Name||Employee1.FirstName||TrainingName1||TrainingName2 etc.. 

如何改变SQL行来获得我想要的。

Sub TRaining() 
Dim con As ADODB.connection 
Dim rs As ADODB.Recordset 
Dim path1 As String, SQLstr As String, conString As String, i 

With Application.FileDialog(msoFileDialogFilePicker) 
.Title = "GDZIE JEST PLIK?" 
.Show 
path1 = .SelectedItems(.SelectedItems.Count) 
End With 
Set con = New ADODB.connection 
conString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
       "Data Source=" & path1 & ";" & _ 
       "Extended Properties=Excel 12.0" 
con.Open conString 
SQLstr = "SELECT o.[Last Name] AS [LastName], o.[First Name] AS [FirstName], s.[TRAINING] AS [T0] FROM [pracownicy$] o LEFT JOIN [szkolenia$] s ON s.[GUID]=o.[GUID] WHERE s.[GUID] IS NOT NULL" 
Set rs = New ADODB.Recordset 

rs.Open SQLstr, con, adOpenUnspecified, adLockUnspecified 
With ThisWorkbook.ActiveSheet 
       For i = 0 To rs.Fields.Count - 1 
        ActiveSheet.Cells(1, i + 1).Value = rs.Fields(i).Name 
       Next i 

Range("A2").CopyFromRecordset rs 
End With 
End Sub 

谢谢你的帮忙!

回答

0

嗨检查这一次,我有一些奎雷斯你

INSERT INTO [TABLE]([名字,名字,培训],[Employee1,Employee1,Training1],[Employee1,Employee1,培训2] [员工2,员工2,培训1],[员工3,员工3,培训1])VALUES(@ [姓名,名字,培训],@ [Employee1,Employee1,Training1],@ [Employee1,Employee1,员工2,员工2,培训1],@ [员工3,员工3,培训1])

+1

可以尝试插入一次命令。 –

相关问题