Цитата |
---|
Ronin751 написал: Перенос из таблицы в Аксес |
я, конечно, запуталась в названии ветки и этой фразе (туда или сюда)
Цитата |
---|
Ronin751 написал: Подскажите пожалуйста, как построить запрос, чтоб данные при выводе заняли каждое свою ячейку? |
по коду - вообще не поняла, зачем на каждый (Worksheet_Change) дёргать базу...
НО попыталась позиционировать
- как-то так
Код |
---|
Sub test()
Dim sCon As String, sSql As String
Dim cn As Object, p, sPath, rs As Object, m
p = ThisWorkbook.Path
sPath = p & "\RAP.mdb"
sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sPath
'Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
sSql = "SELECT * From Rap Where [Data]=" & "#" & Format(Sheets("РАПОРТ").Range("K3").Value, "mm\/dd\/yyyy") & "#" & ""
rs.Open sSql, sCon, adOpenStatic
With Sheets("РАПОРТ")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
'On Error Resume Next
'a = rs.GetRows
Do While Not rs.EOF
For Each fld In rs.Fields '.Count
If fld.Name <> "ID" And fld.Name <> "Work" And fld.Name <> "Data" Then
For Each cl In Sheets("РАПОРТ").Range("C7:X7")
If cl.Value = fld.Name Then
For r = 8 To LastRow
m = Replace(Sheets("РАПОРТ").Cells(r, 2).Value, "Работа", "")
If m = rs.Fields(1).Value Then
If fld.Value <> 0 Then
Sheets("РАПОРТ").Cells(r, cl.Column).Value = fld.Value
End If
End If
Next
End If
Next
End If
Next
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Sub
|
честно говоря, понимаю, что сколько вопросов у меня возникло по тех заданию - столько проверок я и внесла в код, чтобы подогнать Все
нужные данные в нужные ячейки... мне кажется, всё вроде становится куда надо... знаю, что упростить можно (например, сразу отсечь нулевые значения - но тоже надо мудрить, и уже в самом запросе - посчитала проще взять всё, а на этапе выгрузки не вставлять нули)... проверку WHERE Work тоже, полагаю, как-то, как вы хотите, можно прикрутить... НО я совсем не поняла смысла вытягивать по каждому (Worksheet_Change) , поэтому и что тянуть не уловила - поэтому вытянула Всё... (
надеюсь, правильно на 01.08.2016)... может, у вас найдутся ваши идеи по упрощению и адаптации под своё видение, согласно этому примеру кода... но мне кажется, если у вас города по разным полям, а работы по разным строкам, то всё-равно где-то бегать(прыгать) придётся - или на этапе формирования запроса, или на этапе выгрузки... как бегать и прыгать удобнее в вашем случае - пока не прониклась этим
Кстати, всем желаю побед в Rio...
P.S. и честно говоря, уже понимаю, что не совсем полный мой этот код - поскольку надо ещё и затирать прежние значения (от др. даты при смене даты) - но это уже детали... думать и дорабатывать их не буду... поскольку, как уже и сказало, оптимальность начального тех.задания смущает