vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest poniedziałek, 07 lipca 2025 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Tabele tymczasowe za pomocą ADODB


otwartyotwarty rozpoczął: wally2 postów: 4



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


Sortuj posty: z