napisał: jalamas postów: 316
umieszczony: 20 grudnia 2007 00:08
edytowany: 20 grudnia 2007 00:11
|
|
Cytat: selecta ????
Rozumiem, że interesują Cię wyniki w zależności od dat: dataOd, dataDo.
Wobec tego stwórz sobie w bazie procedurę z parametrami:
CREATE PROCEDURE jakas(@dataOd datetime,@dataDo datetime)
As... itd...
następnie tak:
Public Sub ExProc()
On Error GoTo ExProc_Error
Dim strCn As String
Dim strProcName As String
Dim oComm As ADODB.Command
Dim oRs As ADODB.Recordset
strProcName = "jakas"
strCn = MojConnectionString
Set oComm = New ADODB.Command
Set oRs = New ADODB.Recordset
With oComm
.ActiveConnection = MojConnectionString()
.CommandType = adCmdStoredProc
.CommandText = strProcName
Set oRs = .Execute(, VBA.Array(#12/17/2006#, #12/17/2006#))
End With
With oRs
If Not (.BOF And .EOF) Then
Do While Not .EOF
MsgBox .Fields(0)
.MoveNext
Loop
End If
End With
ExProc_Exit:
On Error Resume Next
If Not oRs Is Nothing Then
If oRs.State = adStateOpen Then oRs.Close
End If
Set oRs = Nothing
Set oComm = Nothing
Exit Sub
ExProc_Error:
MsgBox "Błąd : ( " & Err.Number & " ) " & Err.Description & vbCrLf & "Procedura : " & "ExProc", vbExclamation
Resume ExProc_Exit
End Sub
Excel 2002, ADO 2.7, MsSQLServer 2000 (SQL Manager 2005) |
|
napisał: wally2 postów: 59
umieszczony: 19 grudnia 2007 10:49
|
|
A więc precyzuję:
Zapytanie w pierwotnej formie ma postać:
declare @dataOd datetime
declare @dataDo datetime
set @dataOd = '2007-12-17'
set @dataDo = '2007-12-17'
set nocount on
drop table #AREK
select a.PozyczkaID,
a.EtapID,
a.StatusID,
a.HDataOD,
a.HKontoPracID,
a.ObiegID,
a.DataUruchomienia,
c.NrUmowy,
c.DataKsiegowania into #AREK
from dbo.CR_STANOFERTY a
inner join dbo.CR_POZYCZKA c on a.PozyczkaID = c.PozyczkaID
inner join dbo.CR_PRZEKAZY b on a.PozyczkaID = b.PozyczkaID
where a.HDataOD >= @dataOd and
a.HDataOD < (@dataDo + 1)and
b.TrybKoresp = 1
union
select d.PozyczkaID,
d.EtapID,
d.StatusID,
d.HDataOD,
d.HKontoPracID,
d.ObiegID,
d.DataUruchomienia,
f.NrUmowy,
f.DataKsiegowania
from dbo.HCR_STANOFERTY d
inner join dbo.CR_POZYCZKA f on d.PozyczkaID = f.PozyczkaID
inner join dbo.CR_PRZEKAZY e on d.PozyczkaID = e.PozyczkaID
where d.HDataOD >= @dataOd and
d.HDataOD < (@dataDo + 1) and
e.TrybKoresp = 1
select a.NrUmowy, g.Nazwisko + ' ' + g.Imie as Nazwisko_Imie_pracownika,
cast (HDataOD as smalldatetime) as Data_przekazania, Wynik = case
when a.EtapID = 108 then 'Decyzje błędy'
when a.EtapID = 114 then 'Decyzja ZDK'
when a.EtapID = 115 then 'Decyzja ZWK'
when a.EtapID = 123 then 'Ewidencja'
end, Sekcja = case
when g.Nazwisko + ' ' + g.Imie = 'Łabowska Irena' then 'Sekcja I'
when g.Nazwisko + ' ' + g.Imie = 'Skrzek Hanna' then 'Sekcja I'
when g.Nazwisko + ' ' + g.Imie = 'Łabanc Magdalena' then 'Sekcja I'
when g.Nazwisko + ' ' + g.Imie = 'Wszołek Andżelika' then 'Sekcja II'
when g.Nazwisko + ' ' + g.Imie = 'Golian Barbara' then 'Sekcja II'
when g.Nazwisko + ' ' + g.Imie = 'Późniewska-Sakowska Katarzyna' then 'Sekcja II'
when g.Nazwisko + ' ' + g.Imie = 'Guterch Anna' then 'Sekcja II'
when g.Nazwisko + ' ' + g.Imie = 'Wasąg Anna' then 'Sekcja III'
when g.Nazwisko + ' ' + g.Imie = 'Dusza Magdalena' then 'Sekcja III'
when g.Nazwisko + ' ' + g.Imie = 'Radziewicz Anna' then 'Sekcja III'
when g.Nazwisko + ' ' + g.Imie = 'Szołtysek Ksenia' then 'Sekcja III'
when g.Nazwisko + ' ' + g.Imie = 'Maruszewski Damian' then 'Sekcja III'
else 'Raport zawiera nieprawidłowe wartości - proszę o kontakt z analitykiem'
end,
a.EtapID
from #AREK a
inner join AD_KONTO_PRAC f on a.HKontoPracID = f.KontoPracID
inner join AD_PRACOWNIK g on f.PracownikID = g.PracownikID
where a.EtapID in (108, 115, 114, 123) --and a.HKontoPracID = '2165'
order by NrUmowy, HDataOD
drop table #AREK
W VBA kod mniej więcej wygląda tak:
baza = "CSO"
serw = "SQL_BCK"
login = "***"
haslo = "******"
con.Open "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=" + baza + ";Data Source=" + serw, login, haslo
con.CommandTimeout = 600
rec.Open Zapytanie, con
gdzie wcześniejsze zapytanie przerobione na stringa w zmiennej Zapytanie
VBA jest posane w Excell.
Problem ten sam jak w pierwszym poście - "to nie działa" |
|
napisał: jalamas postów: 316
umieszczony: 18 grudnia 2007 23:57
edytowany: 18 grudnia 2007 23:58
|
|
Aby odpowiedzieć czy trzeba wiedzieć co i gdzie tenże VBA Access adp, mdb , może Excel a może Word, też może być ?
Zobacz ADOX.
Oraz co to znaczy zaimportować? |
|
napisał: wally2 postów: 59
umieszczony: 18 grudnia 2007 14:42
|
|
Kożystając z ADODB i prostych selektów jest wszystko ok. Jednak życie pokazuje że proste rzeczy nie wystarczą. napisałem selekta który tworzy tabele tymczasowe dokonuje operacji na nich a potem prostym selektem daje wynik.
Selekt jest poprawny bo działa na query Analizerze, ale jak mam go zaimportować za pomocą VBA tak by ADODB nie zgłaszało błędu. Jes w ogóle możliwość czegoś takiego.
Dzięki za pomoc. |
|
 wstecz 1 dalej  wszystkich stron: 1
|