konto usunięte

Temat: Mam tutaj maly dylemat

Jest to dosc obszerny skrypt,k tory dostalam do przeanalizowania i skrocenia na wstepie swojej pracy. Nigdy jednak nie mialam do czynienia z tak obszernym skryptem. Prosze o pomoc w zrozumieniu co ten skrypt robi. Ogolnie widze ze wyciaga informacje z poszczegolnych tabel w bazie danych, ale nie rozumiem do konca dynamicznej jego czesci. Male utrudnienie plik jest w jezyku holenderskim. POMOCY

/*

*/

--delete work.dbo.InlezenWerkgever
--stap 1 maak import tabel en lees excel in
drop table work.dbo.InlezenWerkgever
create table work.dbo.InlezenWerkgever (
WA char(10)
, Debiteur varchar(8)
, WerkgeverNaam varchar(80)
, VestAdresStraat varchar(80)
, VestAdresNr varchar(80)
, VestAdresPostcode varchar(80)
, VestAdresPlaats varchar(80)
, PostAdresStraat varchar(80)
, PostAdresNr varchar(80)
, PostAdresPostcode varchar(80)
, PostAdresPlaats varchar(80)
, telefoon varchar(80)
, fax varchar(80)
, contactNaam varchar(80)
, email varchar(1000)
, regio varchar(80)
, UWVnr varchar(80)
, WerkgeverTeam varchar (44)
, AccountmanagerLoginCode varchar(80)
, WerkgevergroepEmeld varchar(100)
)

-- importeer via enterprizemanager de data
select * from Work..inlezenwerkgever

--stap 2 extra kolommen toevoegen (kan in 1 keer)
alter table Work.dbo.InlezenWerkgever add wgv_email varchar(60);
alter table work.dbo.InlezenWerkgever add bron char(1);
alter table work.dbo.InlezenWerkgever add Factuurlayoutcode char(2);
alter table work.dbo.InlezenWerkgever add vst_id int;
alter table work.dbo.InlezenWerkgever add tea_id int;
alter table work.dbo.InlezenWerkgever add AccountManager_MDW_ID int;
alter table work.dbo.InlezenWerkgever add wgv_debiteurnr varchar(8);
alter table work.dbo.InlezenWerkgever add wgv_id int;
GO

--stap 3 ontdubbel bron
select distinct
*
into #a
from work.dbo.InlezenWerkgever

delete work.dbo.InlezenWerkgever

insert work.dbo.InlezenWerkgever
select *
from #a
drop table #a

--4 email start
select
max(len(email))
from work.dbo.InlezenWerkgever

update a set
wgv_email = left(email,60)
from work.dbo.InlezenWerkgever a

update a set
wgv_email = substring(wgv_email,1,charindex(';',email)-1)
from work.dbo.InlezenWerkgever a
where charindex(';',email) > 0
--4 email end

--5 tel start
update work.dbo.InlezenWerkgever
set telefoon = replace(telefoon,' ','')
where len(telefoon) > 15

update work.dbo.InlezenWerkgever
set telefoon = left(telefoon,15)
where len(telefoon) > 15
--5 tel end

--6 fax start
update work.dbo.InlezenWerkgever
set fax = replace(fax,' ','')
where len(fax) > 15

update work.dbo.InlezenWerkgever
set fax = ''
where len(fax) > 15
--6 fax end

--7 bron
update a set
bron = 'M' --Maetis
from work.dbo.InlezenWerkgever a
where a.bron is null

--8 regio check
select distinct Regio
from work.dbo.InlezenWerkgever a

update a
set Regio = 'Hoofdkantoor'
from work.dbo.InlezenWerkgever a
where Regio = 'landelijk'

--select * from klantindelingjuli2007
update a
set Factuurlayoutcode = b.layoutcode
from work.dbo.InlezenWerkgever a
join klantindelingjuli2007 b on b.zone = a.Regio
and left(b.layoutcode,1) = '0'
where factuurlayoutcode is null
--8 regio toevoegen end

--9 wgv vestiging, wgv team, account manager toevoegen start
update a set tea_id = tea.tea_id
from work.dbo.InlezenWerkgever a
join promaetis..team tea on tea.naam = a.[WerkgeverTeam]

update a set AccountManager_MDW_ID = mdw.id
from work.dbo.InlezenWerkgever a
left outer join promaetis..medewerker mdw on mdw.code = a.accountmanagerlogincode
where AccountManager_MDW_ID is null

update work.dbo.InlezenWerkgever
set vst_id = 13
where Regio in ('Noord')

update work.dbo.InlezenWerkgever
set vst_id = 4
where Regio in ('NoordWest')

update work.dbo.InlezenWerkgever
set vst_id = 10
where Regio in ('NoordOost')

update work.dbo.InlezenWerkgever
set vst_id = 44
where Regio in ('Hoofdkantoor')

update work.dbo.InlezenWerkgever
set vst_id = 5
where regio in ('zuidwest')

update work.dbo.InlezenWerkgever
set vst_id = 24
where regio in ('zuidoost')
--9 wgv vestiging, wgv team, account manager toevoegen end

--10 len(deb) moet zijn 8. bedrijf bepaalt prefix, if any
update work.dbo.InlezenWerkgever
set wgv_debiteurnr = debiteur
where len(debiteur) = 8
and isnumeric(debiteur) = 1
--10 end

--11 ff de lege aansluitidentificatie vullen
update a set UWVnr = '<onbekend>'
from work.dbo.InlezenWerkgever a
where len(UWVnr) = 0
or UWVnr is null
--11 end

--12 check WerkgeverNaam dubbel geleverd?
select WerkgeverNaam
from work.dbo.InlezenWerkgever a
group by WerkgeverNaam
having count(1) > 1
--12 end

--13 werkgevernaam komt al voor start
--met actief contract start?
select *
from promaetis..contract
where wgv_id in (select wgv_id
from promaetis.dbo.werkgever
where wgv_naam in (select WerkgeverNaam
from work.dbo.InlezenWerkgever
where wgv_id is null)
)
order by wgv_id,cnt_periodevan
--zoja dan STOP

--komt sowiesovoor in prod?
select wgv.wgv_naam,wgv.wgv_debiteurnr, wgv.inserted,wgv.insertedauditcode
from prd.promaetis.dbo.werkgever wgv
join work.dbo.InlezenWerkgever a on a.WerkgeverNaam = wgv.wgv_naam
--zoja dan STOP
--13 werkgevernaam komt al voor end

--14 lege kolommen vullen start
update work.dbo.InlezenWerkgever
set email = ''
where email is null

update work.dbo.InlezenWerkgever
set wgv_email = ''
where wgv_email is null

update work.dbo.InlezenWerkgever
set fax = ''
where fax is null

update work.dbo.InlezenWerkgever
set telefoon = ''
where telefoon is null

update work.dbo.InlezenWerkgever
set contactnaam = ''
where contactnaam is null

update a
set PostAdresstraat = '', PostAdresnr = '',PostAdrespostcode = '',PostAdresplaats = ''
from work.dbo.InlezenWerkgever a
where PostAdresstraat is null
--14 end

--15 create script
set nocount on
print 'begin tran'
print '--commit'
print '--rollback'
print 'declare @wgv_id int, @VestigingsAdresId int, @AdresID int;'
select
'exec sp_GenerateUniqueNumber ''wgv_id'', @wgv_id output;
insert adres (code,Omschrijving,InsertedAuditCode,Adrestype,WerkgeverId
,Straatnaam,nummer,postcode,plaatsnaam,telefoonnummer,faxnummer,email,landid)
values ('''','''+replace(VestAdresstraat,char(39),char(39)+char(39))+' '+VestAdresNr+' '+replace(VestAdresplaats,char(39),char(39)+char(39))+''',''script'',''S'',1
,'''+replace(VestAdresstraat,char(39),char(39)+char(39))+''','''+VestAdresNr+''','''+left(VestAdrespostcode,4)+' '+right(VestAdrespostcode,2)+'''
,'''+replace(VestAdresplaats,char(39),char(39)+char(39))+''','''+isnull(telefoon,'')+''','''+isnull(fax,'')+''','''+isnull(email,'')+''',0);
select @VestigingsAdresId = @@identity;
INSERT [WERKGEVER]
([WGV_ID],[EGR_ID],[LND_ID],[WER_WGV_ID],[TEA_ID],[PLS_ID],[VST_ID]
,[WGV_AANSLUITIDENTIFICATIE],[WGV_NAAM],[WGV_FAX],[WGV_TELEFOON]
,WGV_verkorte_naam,[WGV_DEBITEURNR],[InsertedAuditCode],Inserted
,[WGC_ID]
,[AccountManager_MDW_ID],[HersteldEn13eWeekNaarUVI],[MMMGeactiveerd],[KlantTypeId]
,[AVSoort],[AVOpzegtermijnId],[AVAfwAfspaken],AVUpdated,MeldtHandmatig
,IsAutomatischProlongeren,IsBulkProlongatie,TerugkoppelingHomekantoor,MailingsGroep
,VestigingsAdresId,REC_STATUS,BVV_ID,eigenaar_id,Referentiecode,FactuurLayoutCode
,AVUpdatedAuditCode,WGV_MIS_KLANT,WGV_ArbouwDispensatie,WGV_EMAIL,BronOrganisatie,Bron
,wgv_straat,wgv_huisnummer,wgv_plaats,wgv_postcode
,wgv_poststraat,wgv_postnr,wgv_postplaats,wgv_postpostcode)
VALUES
(@WGV_ID,7,0,null,'+cast(tea_id as varchar)+', null,'+cast(vst_id as varchar)+'
,'''+UWVnr+''','''+replace(WerkgeverNaam,char(39),char(39)+char(39)) COLLATE SQL_Latin1_General_CP850_CI_AI+''','''+FAX+''','''+telefoon+'''
,'''+left(replace(WerkgeverNaam,char(39),''),30)+''','+''''+wgv_debiteurnr+''',''script'',getdate()
,'+case when regio = 'hoofdkantoor' then '7' else '6' end+'
,'+cast([AccountManager_MDW_ID] as varchar)+',''J'' /*HersteldEn13eWeekNaarUVI*/,0,''K''
,''A'',7,0,getdate(),''J''
,''J'',''J'',''J'',''J''
,@VestigingsAdresId,1, 202518815 /*UWV*/,''DTP_ASD1'',cast(@wgv_id as varchar),'''+FactuurLayoutCode+'''
,''-'',''J'',''N'','''+isnull(wgv_email,'')+''',1,'''+bron+'''
,'''+replace(a.VestAdresstraat,char(39),char(39)+char(39))+''','''+a.VestAdresNr+''','''+replace(a.VestAdresplaats,char(39),char(39)+char(39))+''','''+left(a.VestAdrespostcode,4)+' '+right(a.VestAdrespostcode,2)+''','''
+replace(a.PostAdresstraat,char(39),char(39)+char(39))+''','''+a.PostAdresNr+''','''+replace(a.PostAdresplaats,char(39),char(39)+char(39))+''','''+left(a.PostAdrespostcode,4)+' '+right(a.PostAdrespostcode,2)+''');
insert adres (code,Omschrijving,InsertedAuditCode,Adrestype,WerkgeverId
,Straatnaam,nummer,postcode,plaatsnaam,email,landid)
values ('''','''+replace(PostAdresstraat,char(39),char(39)+char(39))+' '+PostAdresNr+' '+replace(PostAdresplaats,char(39),char(39)+char(39))+''',''script'',''P'',@wgv_id
,'''+replace(PostAdresstraat,char(39),char(39)+char(39))+''','''+PostAdresNr+''','''+left(PostAdrespostcode,4)+' '+right(PostAdrespostcode,2)+'''
,'''+replace(PostAdresplaats,char(39),char(39)+char(39))+''','''+isnull(email,'')+''',0);
select @AdresId = @@identity;
update adres set werkgeverid = @wgv_id
where Id = @VestigingsAdresId;
insert bestemming (Code,Bestemmingstype, WerkgeverId, AdresId)
values('''',''A'',@wgv_id,@VestigingsAdresId);
insert bestemming (Code,Bestemmingstype, WerkgeverId, AdresId)
values('''',''C'',@wgv_id,@VestigingsAdresId);
insert bestemming (Code,Bestemmingstype, WerkgeverId, AdresId)
values('''',''U'',@wgv_id,@AdresId);
insert bestemming (Code,Bestemmingstype, WerkgeverId, AdresId)
values('''',''V'',@wgv_id,@VestigingsAdresId);'
from work.dbo.InlezenWerkgever a
where werkgevernaam <> 'Allianz 560480 Fleet'
set nocount off
--15 end

--16 bijwerken
update a set wgv_id = wgv.wgv_id
from work.dbo.InlezenWerkgever a
join prd.promaetis.dbo.werkgever wgv on wgv.wgv_debiteurnr = a.wgv_debiteurnr
and a.WerkgeverNaam = wgv.wgv_naam
where a.wgv_id is null
--16 end

--17 contactpersoon info bijvoegen start
--even kijken wat er is geleverd
select distinct a.contactNaam
from work.dbo.InlezenWerkgever a
join prd.promaetis.dbo.werkgever wgv on wgv.wgv_id = a.wgv_id
where contactNaam <> ''
and a.wgv_id not in (select werkgeverid from promaetis..contact)
order by 1

--drop table #contact
select distinct
replace(newid(),'-','') Code
, 'script' InsertedAuditCode
, case when a.contactNaam like 'afdeling%' or a.contactNaam in ('P & O','Personeelsadministratie','Personeelszaken')
then 'A'
else 'P' end Contacttype
, a.wgv_id Werkgeverid
, a.contactNaam Naam
into #contact
from work.dbo.InlezenWerkgever a -- on a.wgv_id = best.werkgeverid
where a.contactNaam <> ''
and a.wgv_id not in (select werkgeverid from promaetis..contact)
and a.wgv_id is not null

set nocount on
print 'begin tran'
print '--commit'
select distinct
'insert promaetis.dbo.contact (Code,InsertedAuditCode,Contacttype,Werkgeverid,Naam)
values ('''+code+''','''+InsertedAuditCode+''','''+Contacttype+''','+cast(Werkgeverid as varchar)+','''+naam+''');
update promaetis.dbo.bestemming
set contactid = @@identity
where Werkgeverid = '+cast(Werkgeverid as varchar)+';'
from #contact
set nocount off
--17 contactpersoon info bijvoegen end

--18 Hierarchie info toevoegen start
set nocount on
print 'begin tran'
print '--commit'
select distinct
'update dbo.werkgever
set wer_wgv_id = '+cast(b.wgv_id as varchar)+'
where wgv_id = '+cast(a.wgv_id as varchar)+';'
from work.dbo.InlezenWerkgever a -- on a.wgv_id = best.werkgeverid
join work.dbo.InlezenWerkgever b on b.Debiteur = a.Debiteur
and b.WA = 'W'
where a.WA = 'A'
and a.wgv_id not in (select wgv_id from promaetis..werkgever where wer_wgv_id is not null)
set nocount off
--18 hierarchie info end

--19 werkgevergroep Emeld maken start
--check if exists
select *
from promaetis..werkgevergroep
where WerkgeverGroepType = 'E'
and omschrijving like (select top 1 WerkgevergroepEmeld+'%(E)%' from work.dbo.InlezenWerkgever
where isnull(WerkgevergroepEmeld,'') <> '')
--zoja STOP

--19a aanmaken wgg
set nocount on
print 'begin tran'
print '--commit'
select
'INSERT [dbo].[WerkgeverGroep]
([Code], [Omschrijving], [InsertedAuditCode], [WerkgeverId], [WerkgeverGroepType])
values (replace(newid(),''-'',''''),'''+WerkgevergroepEmeld+' (E)'+''',''script''
,'+cast(wgv_id as varchar)+',''E'');'
from work.dbo.InlezenWerkgever
where wgv_id = (select min(wgv_id) from work.dbo.InlezenWerkgever
where isnull(WerkgevergroepEmeld,'') <> '')
set nocount off

--19b vullen wgg
declare @werkgevergroepId int
select @werkgevergroepId = id
from promaetis..werkgevergroep
where WerkgeverGroepType = 'E'
and omschrijving = (select top 1 WerkgevergroepEmeld+' (E)' from work.dbo.InlezenWerkgever
where isnull(WerkgevergroepEmeld,'') <> '')

set nocount on
print 'begin tran'
print '--commit'
select
'INSERT [dbo].[WerkgeverWerkgeverGroep]
([Code], [Omschrijving], [InsertedAuditCode], [WerkgeverId], [WerkgeverGroepId])
values (replace(newid(),''-'',''''),'''',''script''
,'+cast(wgv_id as varchar)+','+cast(@werkgevergroepId as varchar)+');'
from work.dbo.InlezenWerkgever
where WerkgevergroepEmeld = (select top 1 WerkgevergroepEmeld
from work.dbo.InlezenWerkgever
where isnull(WerkgevergroepEmeld,'') <> '')
set nocount off
--19 werkgevergroep Emeld maken end
--the end

select Debiteur, WerkgeverNaam, wgv_id
from work..inlezenwerkgever

konto usunięte

Temat: Mam tutaj maly dylemat

wydaje mi się że generuje dane do kolejnego skryptu

dane są przekierowaywane strumioniowo do pliku i ponownie wykonane
Krzysztof Raczkowski

Krzysztof Raczkowski Stała współpraca,
Logifact-Systems Sp.
z o.o.

Temat: Mam tutaj maly dylemat

Mirka Dąbrowska:
--stap 3 ontdubbel bron
select distinct
*
into #a
from work.dbo.InlezenWerkgever

delete work.dbo.InlezenWerkgever

insert work.dbo.InlezenWerkgever
select *
from #a
drop table #a

Heh co by nie robił niezłe puzle :) Np. to co wyżej ... jeżeli nie jest śmieciem to by znaczyło iż na work.dbo.InlezenWerkgever jest trigger który coś jeszcze robi ....

A wiesz może po co ten skrypt jest ? :)

No chyba, że to taka 'wejściówka' dla nowych w firmie :)
Krzysztof Raczkowski

Krzysztof Raczkowski Stała współpraca,
Logifact-Systems Sp.
z o.o.

Temat: Mam tutaj maly dylemat

Mirka Dąbrowska:
Jest to dosc obszerny skrypt,k tory dostalam do przeanalizowania i skrocenia na wstepie swojej pracy. Nigdy jednak nie mialam do czynienia z tak obszernym skryptem. Prosze o pomoc w zrozumieniu co ten skrypt robi. Ogolnie widze ze wyciaga informacje z poszczegolnych tabel w bazie danych, ale nie rozumiem do konca dynamicznej jego czesci. Male utrudnienie plik jest w jezyku holenderskim. POMOCY

Jeszcze mi coś do głowy przyszło - to może nie być skrypt który działa jako całość. To równie dobrze jakieś notatki helpdesku :D :D
Paweł B.

Paweł B. architekt baz danych
/ SQL Developer /BI
Developer

Temat: Mam tutaj maly dylemat

Krzysztof Raczkowski:
Mirka Dąbrowska:
--stap 3 ontdubbel bron
select distinct
*
into #a
from work.dbo.InlezenWerkgever

delete work.dbo.InlezenWerkgever

insert work.dbo.InlezenWerkgever
select *
from #a
drop table #a

Heh co by nie robił niezłe puzle :) Np. to co wyżej ... jeżeli nie jest śmieciem to by znaczyło iż na work.dbo.InlezenWerkgever jest trigger który coś jeszcze robi ....
Zauwaz, że najpierw masz select DISTINCT *
Ten fragment usuwa duplikaty.

A wiesz może po co ten skrypt jest ? :)

No chyba, że to taka 'wejściówka' dla nowych w firmie :)
Paweł B.

Paweł B. architekt baz danych
/ SQL Developer /BI
Developer

Temat: Mam tutaj maly dylemat

Między krokiem 1 (stap 1) a krokiem 2 następuje wklejenie recordsetu z excela do do
tabeli work.dbo.InlezenWerkgever przez Enterprise Managera (SQL 2000)

konto usunięte

Temat: Mam tutaj maly dylemat

Dzięki za sugestje. Odrazu lepiej się czuję. Po dłuższym ślęczeniu też dochodzę do wniosku że to jest on trochę zaśmiecony, ale najbardziej interesuje mnie częśc dynamiczna. Nie wiem dokładnie co wykonuje w poszczególnych krokach. Jak to jest z w kroku 15 gdzie skyrpt generuje dodatkowy skrypt tak jak wspomniał Przemek, że "dane są przekierowaywane strumioniowo do pliku i ponownie wykonane". Jak to się dzieje?
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: Mam tutaj maly dylemat

Maciej Krupnicki:

Macieju, używaj proszę BBCode, będzie łatwiej odczytać ten skrypt, o ile ma w ogóle jakieś wcięcia..

Następna dyskusja:

Mam problem - ACCES




Wyślij zaproszenie do