Fakirler için AutoCAD’den Excel’e metraj aktarımı

Fakirler için serisinin 2. yazısında AutoCAD Revit gibi ürünleri almaya parası yetmeyen ama VBA ile AutoCAD ’deki bilgileri excele atmak isteyen müteahhitlerimizi hedefliyoruz.
Yaklaşık 5 senedir AutoCAD ile çok fazla haşır neşir değilim çoğu zaman işlerimi PDF formatından görüyorum , fakat bunun öncesinde AutoCAD ile çok detaylı çalışmalar yapmıştım , en son 5 sene önce teknik ofis müdürü olarak çalışırken iş sahibi firmanın bize çizimlerin demir hesap cetvellerinin bulunmadığını ve bazı çizimlerin ölçeklerinin doğru olmayabileceğini ve hızlı bir şekilde metraj çıkartılması gerektiğini ve hakkedişlerin bu metrajlar üzerinden yapılacağını ve proje başında tüm metrajların verilmesi gerektiğini söylemesi üzerine bir çözüm aramaya başladık , kısıtlı iş gücümüzle tek tek demirleri excele atmamız hem zaman alacaktı hem de çok fazla hata yapacaktır. İşverenin metraj cetvellerini paylaşmamasının esas sebebinin sözleşmemizdeki dünyanın en saçma maddesi olan eğer kesin hesap metrajı hakkediş metrajlarından az ise kesinti yapılır eğer fazla ise hakkediş değeri kabul edilir maddesiydi. Sonuç itibariyle konuya çözüm bulmak için daha önceden tecrübemin olduğu VBA ile bazı kodlar yazmak zorunda kaldım ve hem bu kodları unutmamak hem de ileride bu çalışmayı geliştirmek için bu yazıyı yazmaya karar verdim, bu noktada şunu belirtmeliyim 5 yıl içerisinde AutoCAD alternatif çözümler sunmuş olabilir, bu yazı tamamen 5 yıl öncesinin teknolojisi ile yazılmıştır.
Diğer yazılardan farklı olarak yapılanları basamak basamak anlatmaktansa çalışmamanın son halindeki önemli noktaları açıklamak daha kolay olacak, alttaki linkte kendi projelerinizde kullanabileceğiniz kodu indirilebilir dosya olarak paylaşacağım, böylece meraklı insanlar ufak değişikliklerle bu kodu kullanabilecekler.

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EsmmDQPKQEhAqpZBDwu2-bwBOHzzCnQnI-fNNNYelYfGlA?e=HNRm4s

Öncelikle bu kodu çalıştırabilmek için AutoCAD’ de Visual Basic eklentisini kurmanız gerekiyor, eskiden AutoCAD ’in içinde yüklü olarak gelirken bir süredir (galiba çok uzun bir süredir) ayrıyeten kurmanız gerekiyor, buradan milyonlarca takipçisi olan bir blogger olarak AutoDesk’e sesleniyorum, insanları lisp gibi kısıtlı, eski, diğer programlarla etkileşimi az ve benim kullanmayı bilmediğim bir programlama diline mahkûm etmeyin. Her neyse altta gördüğünüz alanda Visual Basic editör tuşuna bastığınızda önünüze bir indirme bağlantısı geliyor ve kurulum dosyasını kurduktan sonra VBA ile uğraşmaya başlayabiliyorsunuz, üstte paylaştığım bağlantı linkinden indirdiğiniz kodu yüklemek için gene altta gördüğünüz load application tuşuna basıp dosyayı yüklemeniz gerekiyor,

Artık Visual Basic editör tuşuna bastığımızda karşınıza gelecek olan ekran yaklaşık olarak alttaki gibi bir şey

 

 

 

 

 

Eğer bu ekran size tanıdık gelmiyorsa bu dakikadan sonra bloğu okumayı bırakıp 5- 6 hafta VBA öğrenip sonra geri buradan okumaya başlayabilirsiniz.

İndirdiğiniz dosyadan detaylı olarak inceleyebileceğiniz gibi ilk alt kodumuz künyemetraj (), tahminimce içinde künye barındıran bir dosyadan bilgileri çekmek için yapmıştım, değişkenleri tanımladıktan sonra ilk komutumuz

On Error Resume Next komutu

Tüm amatörlerin hayat kurtarıcısı olan bu komut hata varsa boş ver AutoCAD istediğimizi atıyorsa önemli değil diyor, bu komutu kullanmamızın sebebi seçtiğimiz 20 tane nesne içinde mesela alan özelliği olmayan nesneler olabilir böyle bir durumda makro çalışmayı bırakıp hata mesajı verecektir bu engellemek işçin her türlü olasılığı düşünüp yüzlerce durumu eleyecek kodlar yazmaktansa zaten bu hata sonuca etkileyemeyeceği için hatayı yok sayıyoruz.
Sonra gelen komutumuz,

 

Burada işlem yapacağımız dosyayı tanımlayıp, ilk satıra başlıkları atıyoruz ve alttaki döngünün 2. Satırdan başlaması için bir değer veriyoruz
Biz esc tuşuna basana kadar seçim yapmamızı sağlaması için yüksek bir döngü oluşturuyoruz

Üstteki kısmı tamamen internetten kopyaladım, o yüzden arada İngilizce açıklamalar var, aynı anda birçok nesneyi seçmenizi sağlıyor

Üstteki kodun hepsi birden fazla seçtiğimiz nesnelere teker teker bakıyor eğer bir bloksa bloğun 2. Ve 3. Niteliğine (attribute) bakıp onu sıradaki satırın 1. Ve 4. Kolonuna yazıyor, değilse sıradaki satırın 2. Ve 3 kolonuna seçilen nesnenin uzunluk ve alanını atıyor, bir sonraki nesneye geçiyor seçilen nesneler bitince esc tuşun a basana kadar yeni seçtiğiniz nesnelere aynı işlemi tekrarlıyor
Metraj () alt kodu künye metrajın nerdeyse aynısı sadece 4. Kolona nesnenin rengini yazıyor
Mahal () alt kodu künye metrajın hemen hemen aynısı sadece muhtemelen mahal isimlerini ayırt edip onların etrafına bir dikdörtgen çiziyor ve AutoCAD ’de bu alanın isim alan ve çevresini atıyor
Koordinat alt kodunda bir hata var sebebini çözemedim ama tahminim amacının bir noktayı seçip koordinatları çizime eklemesi
Demir () bir form kullandığımız alt kod, ilk önce formumuza ön tanımlı bilgileri gönderiyoruz, sonrasında da formu açıyoruz

Bu formun amacı bir önceki kodumuz gibi aynı anda birçok nesneyi seçip excele gönderirken her nesneden sonra bu formun ortaya çıkıp gerekli düzenlemelerin yapılmasını sağlamak.

 

 

 

İlk düğmemiz “AUTOCADDEN AL” düğmesi bu düğme ile ilk önce formu gizliyoruz sonra önceki kodlarda da kullandığımız yöntemle Nesneleri seçiyoruz

Burada diğer çalışmalardan farklı olarak seçtiğimiz nesnelerin katmanını(layer) önceden tanımladığımız bir katman ile değiştiriyor, eğer seçtiğimiz nesnenin katmanı önceden bizim ayarladığımız katman ile değiştirilmişse bu nesneler hesaba katılmıyor, böylece mükerrer metraj çıkartmıyoruz, nesnelerin değerleri formdaki alanlara yazılıyor ve form yeniden görülür oluyor.

Gizle düğmesi formu gizliyor böylece çizimde kontrol etmek istediğimiz noktaları kontrol edebiliyoruz,

AutoCAD’den ölç düğmesi bazı pozlarda demir boyu verilmiyordu bu pozlarda demirin uzunluğunu çizim üzerinden ölçmemiz gerekiyordu bu pozlar için bu düğme çizimde seçtiğimiz nesnenin uzunluğunu forma gönderiyordu.

Excel Aç düğmesi Excelde bir şey kontrol etmemiz gerektiğinde Excel’i görünür hale getiriyordu

Excel gönder, formdaki tüm bilgileri excele yen, bir satır olarak giriyordu.

Kiriş () alt kodunda ise üstte anlattığımız özelliklere ek bir özellik yok,

bu yazıda çok fazla detaya giremedim çünkü hem bu özellikler yıllardır kullanmıyorum hem de bu konuda  terminolojiye çok hakim değilim, umarım bazı insanların işine yarar.

 

Fakirler için cep telefonu üzerinden PowerApps uygulaması ile iş programı güncelleme

Bir süredir pahalı uygulamalara alternatif yöntemleri anlatmayı planladığım fakirler için serisinin ilk yazınını yazmaya karar verdim, ilk yazımız Microsoft’un PowerApps uygulaması ile cep telefonu üzerinden is programı aktivitelerinin yüzde tamamlanma, başlangıç günü, kalan sure ve beklenene bitiş bilgilerini güncelleme olacak. Proje yönetiminde gerçekleşme bilgilerini günlük olarak sahadan toplamamak can sıkıcı olabiliyor. Aktivitenin sorumlusunun gelip bilgisayar başına oturup güncelleme maili atmasındansa , ki bu bile çok ütopik , sahadayken cep telefonu ile o gün uğraştığı aktivitelerin güncellemesini yapmak çok daha kullanışlı olacaktır  , zaten Oracle firmasının da bunu başarabilmek için telefondan primavera programını güncelleyebileceğimiz uygulamaları var fakat bu uygulamalar  için bir sunucu kurmalı ve birçok kullanıcı lisansı almanız gerekiyor, bunun yerine Primavera’nın sadece stand alone kullanıldığı bir projede Microsoft PowerApps uygulaması ile bu güncellemeleri bir Excel dosyası üzerine alabiliyoruz.MS PowerApps Microsoft’un Office 365 business ve enterprise planları dahilinde sunduğu  cep telefonunda ve bilgisayarda kullanabileceğimiz uygulamaları hızlı bir şekilde oluşturabileceğiniz bir platform.

Bu yazıdaki senaryomuzda primavera server kurmak istemeyen, ama eğer güncellemeleri düzgün almazsa ileride hukuki bir durumda başına bela alacağının farkında olan fakir ama tüm çalışanlarına en azında lisanslı başlangıç Office 365 paketini sağlayabilecek bir firma olduğunu farz ediyoruz.

Öncelikle bu benim ilk PowerApps uygulamam o yüzden benim uyguladığımdan daha verimli uygulamalar olabilir zamanla bu uygulamayı geliştirmeyi planlıyorum, ilk olarak her iş programını güncellediğimizde bilgileri aktaracağımız ve kullanıcılar tarafından güncellenecek bir tablo oluşturmamız gerekiyor, bu tabloyu daha önceki yazımda bahsettiğim proje üzerinden yapmayı planlıyorum,

İlgili yazı için

http://planlamadanismanlik.com/alternatif-bir-spi-analizi/

Linkine tıklayabilirsiniz

Önceki yazımızda OBDC üzerinden nasıl güncel bilgileri excelde power query ile istediğimiz son formata dönüştürebileceğimiz anlatmıştık, burada benzer şekilde sadece bitmemiş aktivitelerin filtrelendiği son tablomuzu oluşturuyoruz, o projede çok az aktivite olduğu ve düzgün bir WBS yapısı olmadığı için bu toplaya bazı farazi aktiviteler ve WBS adlandırmaları (WBS burada hesaplanmış bir alan ve WBS’in 2. Ve 3. Seviyelerinin birleştirilmiş bir metni olacak) ekliyorum,

Tabloda görebildiğiniz gibi temel bilgiler, güncelleyeceğimiz alanların yanısıra edited by ve data date kolonları ekliyoruz, böylece o aktivitenin ne zaman ve kim tarafından güncellendiğini görebileceğiz.

Bu dosyamızı OneDrive bulut alanı üzerinde bir klasöre kaydediyoruz böylece PowerApps bu tabloya erişebiliyor.

PowerApps web sayfasına girip start from data özelliğini seçip uygulamayı yapmaya başlıyoruz,

Data kaynağı olarak OneDrive seçip, kaydettiğimiz dosyayı bulup içinden tablomuzu seçiyoruz, benim yarattığım tablonun ismi Task_update ve ben onu seçiyorum, bundan sonra benim veri kaynağımın ismi Task_update olarak geçecek ve benim excelde yaptığım her değişikliği PowerApps otomatik olarak güncelleyecek. Bu noktada PowerApps otomatik olarak bir şablon hazırlıyor aslında bu şablonda bence baya kullanılır olmasına rağmen bazı  değişikliklerle bunu daha etkili bir hale getireceğiz,

PowerApps ’in oluşturduğu şablon yandaki fotoğrafta gözüktüğü gibi oluştu. İlk iş olarak bize göstermesini istediğimiz bilgileri göremiyoruz benim görmek isteğim ise bilgiler WBS, aktivite ID, aktivite ismi ve fiziksel tamamlanma yüzdesi, bu yüzden sol taraftaki browsegallery galerisini seçip sağ taraftaki properties özelliğine basıyorum

ve burada layoutu 3 adet bilgiyi gösteren layout ile değiştirip alanları iseyandaki fotoğrafta görüldüğü gibi ayarlıyoruz, eksik olan alanımız WBS i özellikle ayrı bir adım olarak göstereceğim ki, buraya bir alan eklememiz gerektiğinde ne yapılması gerektiğini anlatabileyim

Sol tarafta mevcut galeriyi seçip insert label seçiyoruz, bu WBS olduğu için bunun daha büyük ve en başta gözüken bir alan olmasını istiyorum ve labellerı ona göre organize ediyorum ve advanced alanında data – text kısmını kısmındaki formülü

ThisItem.WBS

Olarak değiştiriyorum uygulamamızın son hali yandaki gibi oldu

Gördüğümüz gibi tüm aktiviteler sıralanıyor , benim istediğim ise uygulamanın sadece kullanıcının , devam eden veya 15 gün içinde başlaması planlan aktivitelerini sıralaması , eğer bunların haricinde bir aktivitenin güncellenmesi gerekiyorsa , mesela veli hasta  ve aktivitelerini sahada ali yapıyor ve aktiviteleri alinin güncellemesi lazım(bu arada herkes aliyi eşek bulmuş sömürüyor, detaylar için üstte linkini verdiğim yazıya bakabilirsiniz),search alanına ilgili aktivitenin id, tanımının veya WBS inin bir kısmını yazarsa altta listelenmesini istiyorum. Ayrıca karışıklık olmaması için bu aktivitelerin WBS ve işin başlama sırasına göre sıralanmasını istiyorum, bunu için galerinin items kısmına bunu tanımlamamız gerekiyor ve bunun içinde items kısmını açıp

SortByColumns(If(

IsBlank(TextSearchBox1.Text),

Filter(

task_update,

user_mail = User().Email,

RESTART_DATE < Today() + 15

),

Search(

task_update,

TextSearchBox1.Text,

"TASK_NAME"

)

),"WBS","RESTART_DATE")

Formülü yazmamız gerekiyor.

Şu an itibariyle listelemem benim istediğim şekle çok yaklaştı son bir adım olarak yüzdenin önünde bir yüzde işareti olmasını istiyorum bunun içinde Body2 alanını seçip

"% "&ThisItem.PHYS_COMPLETE_PCT

Formülünü yazıyorum.

PowerApps otomatik oluşturduğu uygulama önce aktivite detayını verip sonra güncelleme üzerine kurulmuş bana bu zaman kaybı olarak geldiğinden dolayı detail screen ara yüzünü silip aktivite de bulunan ok tıklandığında direkt olarak edit screen e geçmesini istiyorum bu yüzden nextarrow3 objesini seçip Onselect alanına

EditForm(EditForm1);Navigate(EditScreen1, ScreenTransition.None)

Formülünü yazıyorum, artık editscreen ara yüzüne geçebiliriz, bu ara yüz temel olarak bir form ve 2 düğmeden oluşuyor genel görüntüsü

yanda görüldüğü gibi oluşturuldu ve bizim istediğimiz görüntü tam olarak değil, editform1 formunu seçip properties/fields kısmında görmek ve güncellemek istediğimiz alanları ve sıralamasını seçiyoruz. Şimdi bazı özellikleri özelleştirmemiz gerekecek, bu alanların hepsi birere datacard olarak geçiyor sol tarafta formun altında her alan için bir datacard var ve datacardın altında label, text gibi alanlar var ve tüm bu alanları özelleştirebiliyoruz.

 

Mesela WBS datacartının altında 3 adet text ve 1 adet label alanı var ben WBS’i büyük harfle göstermesini istediğim için DataCardKey20 textini seçip DATA/Text alanını “WBS” olarak değiştiriyorum, ayrıca kimseni WBS veya aktivite kodu gibi alanları değiştirilmesini istemediğim için bu alanları sadece görülebilir yapmak istiyorum, WBS için DataCardValue16 alanını seçip Advanced / Design/DisplayMde alanını seçip

DisplayMode.View

Formülünü yazıyorum, bu tür alanlar kitlenmiş olabiliyor değiştirmek için advanced kısmına gelip en üstte gözüken kilit tuşuna basmanınız gerekiyor,

Bu işlemleri data date, edited by, aktivite adı ve id içinde tekrarlıyoruz, data date ve edited by alanlarının için formla beraber otomatik olarak oluşmasını istiyorum bu yüzden bu alanların DATA/ Default özelliklerini sırasıyla

Today()

User().Email

Olarak değiştiriyorum.

Başlangıç ve tahmini bitiş zamanlarında benim istediğim başlangıç için saat 8:00 bitiş içinde 17:00 gösterilmesi, iş programında tüm takvimleri buna göre ayarlayıp başlangıç ve bitiş saatlerini sabitliyoruz, bu yüzden her iki alanda saatleri sabitleyip görünmez yapıyoruz.

Formumuzun son hali yanda gördüğümüz gibi oldu, daha önceki deneyimlerimden insanların bu tip bir formu bile doldururken girebileceği mantıksız dataların haddi hesabı yok , o yüzden toplamda sadece 4 alan doldurulacak olsa da hataları önlemek için bazı önlemler alıyoruz , öncelikle başlangıç tarihi olarak ileri bir günün seçilmesini engellememiz lazım o yüzden bu talihin altındaki error mesajı text ini buluyoruz , burada ErrorMessage1 olarak geçiyor ve text kısmına "Başlangıç tarihi bugünden büyük olamaz" yazıyoruz , visible kısmına da

If(DateValue1.SelectedDate>Today(),true,false)

Formülünü ekliyoruz böylece ileri bir tarih seçilirse uyarı mesajı ortaya çıkacak, aynı mesajları diğer alanlar içinde uyguluyoruz

Eğer formda bir hata varsa gönderme düğmesini görünmez yapmak için

IconAccept1.visible değerini

If(ErrorMessage1.Visible=true Or ErrorMessage5.Visible=true Or ErrorMessage7.Visible=true  ,false,true)

Yapıyoruz

Formumuzun son hali yanda gördüğümüz gibi oldu ve artık hatalı bir bilginin gönderilmesini önlemiş olduk. Gereksiz düğme ve ara yüzleri de sildikten sonra çalışmamızı yayınlayabiliriz, Artık organizasyon içindeki izni olan tüm çalışanlar cep telefonuna PowerApps uygulamasını indirip güncellemeleri yapabilir.

Güncelleme dışında PowerApps uygulamasının inşaat sektöründe benim aklıma gelen kullanımları, çeşitli kontrol ve test formlarının doldurulması (uygunsuzluk formu, kalite kontrol formları vs.), kullanana özel raporların oluşturulması ve bazı taleplerin oluşturulması (malzeme istek formu gibi)

Bu uygulamayı geliştirmeyi düşünüyorum, kafamdaki eklemeler

  • Aktivite bazında eğer yüklenici sorumluluğunda olmayan bir gecikme varsa bunu raporlayabileceğimiz bir ekran
  • Düzgün bir puantaj sistemi için Aktiviteye bağlı çalışanların ve ekipmanları raporlanması için bir ekran
  • Günlük raporun tamamen bu ekran ürerinden tamamlanması
  • Aktivite bazlı Malzeme talebi, beton slump testi gibi tüm verilerin girilebilmesi

 

Tabi önce PowerApps uygulamasını detaylı olarak öğrenmem gerekiyor.

Power view ile detaylı raporlama

Daha önceki yazımızda bir projedeki çalışanların performansını hesaplayıp bunu power view ile raporlamıştık,önceki yazımız ulaşmak için

http://planlamadanismanlik.com/alternatif-bir-spi-analizi/

linkini kullanabilirsiniz, fakat önceki çalışmamızda elimizdeki veriler kısıtlı olduğu için raporumuzda filtreleyebileceğimiz çok fazla değer yoktu ayrıca internetteki power view ile alakalı tüm örneklerde harita üzerinden veri gösterme raporları vardı, bence çok yararsız olsa da bu araştırma ışığında tüm yöneticilerin performansları bir haritada görmek istedikleri sonucuna vardım.

Rapor üzerinde harita gösterimini sağlayabilmek için şöyle bir senaryo oluşturdum, Toplam 3 şehirde 3 ayrı projenin devam ettiği bir şirkette en iyi yüksek performanslı 10 çalışanın sıralandığı, ülkelere göre performansların gösterildiği ve şehirlere göre performansların harita üzerinde gösterildiği bir rapor derleyeceğiz.

Bir önceki örneğimize ek olarak bu örnekte çalışan sayımızı arttırdık ve alttaki tabloyu oluşturduk

isim parent ülke şehir
furkan hasan IRAK Bağdat
ahmet furkan IRAK Bağdat
mehmet furkan IRAK Bağdat
metin furkan IRAK Bağdat
ali metin IRAK Bağdat
veli metin IRAK Bağdat
hasan IRAK
ziya UKRAYNA
hüseyin ziya UKRAYNA Kiev
şamil hüseyin UKRAYNA Kiev
hamdi hüseyin UKRAYNA Kiev
george hüseyin UKRAYNA Kiev
hans george UKRAYNA Kiev
gruber george UKRAYNA Kiev
tosun ziya UKRAYNA Dnipro
şemsi tosun UKRAYNA Dnipro
paşa tosun UKRAYNA Dnipro
remzi tosun UKRAYNA Dnipro”
fatmagül remzi UKRAYNA Dnipro
ayşe remzi UKRAYNA Dnipro

Bir önceki yazımızda bahsettiğimiz performans hesaplama yöntemi ile 3 projeden de verilerin tek bir tablo üzerinde birleştirildiğini farz ediyoruz ve alttaki tabloyu oluşturuyoruz,

 

Bir önceki çalışmadan farklı olarak burada ülke ve şehir alanları girilmiş ve gruplandırma sırasında doğru bir hesaplama yapılabilmesi için performans hesabını PowerPivot içerisinde yapacağız. Tabloya baktığınızda Hasan ve ziya isimli çalışanların bir parent çalışanı yok ve tüm değerleri 0 olarak belirlenmiş, buradan da anlayacağımız üzere bu çalışanlar ülke sorumluları, kendilerine ait  atanan bir proje olmadığı için performans değerlerini altında çalışanların performansından oluşturacağız. Verilere genel olarak baktığımızda Ukrayna’daki erkek çalışanların performansını projeye yansıtamadığını görmekteyiz, buda genel olarak ziyanın performansını düşürmekte.

Bir önceki örnekteki aynı işlemi yapıp verileri PowerPivot’a aktarıyoruz , bir önceki örnekten farklı olarak burada org hiyerarşisine 1 katman daha eklendiği için org4 alanını yaratıyoruz, ayrıca 1 adet measure yaratıyoruz. Bu measure için formülümüz

performans: =sumx(performans,[A]*[r])/sumx(performans,[B])

Önceki örneğe benzer şekilde

Bir pivot tablosu oluşturuyoruz ve performans tablomuza org performans kolonunu ekliyoruz, bu kolonu ekleme nedenimiz ilk 10 çalışanı belirlemek için bu değerden, performansları ülkelere göre hesaplarken “performans” measure hesaplamasında yararlanacağız

 

 

 

 

PowerPivot’ta

sıralama:=RANKX(ALL(performans[isim]),CALCULATE(sum([org performans])))

şeklinde yeni bir measure tanımlıyoruz, bu measure isimleri performansa göre sıralamamıza yarıyor böylece ilk 10 veya ilk 3 gibi görseller hazırlayabiliyoruz.

 

Powerwiew da 3 alan oluşturuyoruz

1 ilk 10 tüm çalışanları “org performans” alanına göre sıralayan bir bar chart

2 ülkelere göre ülke performansını ve ilk 3 çalışanı sıralayan bir matris alanı

3 org2 seviyesinde şehirlerin performansını gösteren bir harita görseli

Bu görselleri oluştururken yapılan adımları teker teker göstermek bir yazı içerisinde çok zor fakat altta linkini verdiğim Excel dosyasını indirdiğinizde her alanın seçtiğinizde bütün ayalarını görebiliyorsunuz.

Görselimizin son hali

 

Fotoğraftaki gibi oluşuyor.

bu yazıda oluşturulan dosyayı indirmek için

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EnXSxYSDAmRBnULnTdRYQNcBkVfhqZRN06_0F6hfDLj43g?e=fVnIgx

linkini kullanabilirsiniz

 

SQLite veri tabanı için ODBC bağlantısı yapılması

Yıllardır tam bir MS SQL fan boyu olarak standalone bile olsa her zaman MS SQL kullanırdım, bu seçimimdeki temel etkenler bağlantı kolaylığı, SQL Management Studio programı ile bulmak istediğin datanın kolayca bulunabilmesi ve az buçuk MS SQL bilgimle bazı durumlara müdahale edebilme ihtimaliydi. Olayın server kısmında ise muhtemelen IT elemanlarının MS SQL’e daha aşina olmasından dolayı her zaman MS SQL ile daha iyi performans almamdı. Son bir yıldır ise standalone olarak SQLite kullanmaya başladım ve gayet memnun kaldığımı söyleyebilirim. MS SQL gibi içini açıp kurcalayabileceğim bir araçtansa hızlı çalışan içinde ne olup bittiğini bilmediğim fakat bir sıkıntıda yedek dosyaya bağlanabileceğim bir veri tabanı hoşuma gitmeye başladı. (Sanırım yaşlanıyorum ve cep telefonunda Androidden Apple geçmeyi düşünmeye başladım). SQLite ile ilgili sıkıntılarım ise excele ODBC ile bağlantı kurmak ve SQL Management Studio programına link yaratabilmekti.
Bu yazıda bu sorunları nasıl bertaraf edebileceğimiz anlatmak istiyorum, bu sorunları çözmek için öncelikle SQLite için bir driver indirmeliyiz fakat şunu söylemeliyim ki internette bu konuyla ilgili nerdeyse hiçbir bilgi yok araştırmam sonucunda Oracle’ın SQLite için bir ODBC driver çözümü sunmadığını farkettim, bulabildiğim tek driver anladığım kadarıyla amatör bir grup tarafından geliştirmiş olan bir driver idi. Bu noktada şu uyarıyı yapmam gerekiyor eğer bu driverı indirirseniz veri tabanınızın başına bir şey gelirse muhatap olarak kimseyi bulamayacaksınız. Öncelikle
http://www.ch-werner.de/SQLiteodbc/
Adresinden kendi sisteminize uygun kurulum dosyasını indiriyorsunuz, ben 64 bit olanını indirdim.

 

Dosyayı indirdikten sonra ODBC data source administrator (64 bit) programını çalıştırıyorsunuz           System DSN sekmesini seçip SQLite3 veri kaynağını seçip configure tuşuna basıyoruz,

 

Database name alanında browse düğmesine basıp SQLite veri tabanımız bilgisayarda nerede bulunuyorsa onu seçiyoruz. Artık OBSC drive’ını kurmuş bulunmaktayız.


Excelden bu veri tabanına ulaşmak için yanda görülen seçeneği seçip SQLite3 datasource bağlantısını seçiyoruz.

 

 

 

 

SQL management linkini kurmak içinde
New linked server seçeneğini seçip fotoğraftaki gibi dolduruyoruz, burada öneli olan provider ve provider string alanlarının doğru doldurulması sonuç olarak veri tabanımızı SQL management studio ya bağlamış olduk.

 

 

 


artık bu bağlantı sayesinde veritabanı ile ilgili sorgularımızı burdan yapabiliriz.

Alternatif bir SPI analizi

Proje planlaması ile ilgili en sıkıntılı konulardan birisi teorideki performans hesaplama kriterlerinin pratikte çok kullanılamıyor olması, proje kontrolü denince ilk akla gelen yaklaşım kazanılmış değer analizleridir fakat daha önceki deneyimlerimden hem SPI hem de CPI hesaplamalarının gerçek manada bir referans olamayacağını düşünüyorum bu yüzden SPI için alternatif bir çalışma göstermek istiyorum.

Öncelikle SPI ile alakalı en sıkıntılı durum genelde çok kısıtlı zamanda yapıldığı için baseline gerçek uygulamayı değerlendirebileceğimiz bir doküman olamıyor ,FIDIC te detaylı iş programının 28. Günde sunulmalıdır yazdığı için birçok müşavir daha doğru düzgün dizaynı olmayan bir projenin baseline’ı bu düzgün oluşturulamamış iş programı olarak kabul ediyor, bu durumda da normalde 15 günde yapılacak bir aktiviteyi  5 günde yapamadığı için kişilerin performansının düşük olduğunu söylüyoruz .Bu sıkıntının kesin bir çözüm yok fakat Amerika Dışişleri Bakanlığının projelerindeki iş programı sunum yönteminin çok daha mantıklı olduğunu düşünüyorum, bu kontratlarda 2 adet iş programı sunuluyor bunlardan ilki IPES( initial Project Execution Schedule) ikincisi ise BPES (Baseline Project Execution Schedule) olarak anılıyor ,ilk program kontrat imzasından 28 gün sonra sunulan ve sadece dizayn ve mobilizasyon aktivitelerinin detaylı olarak ele alındığı , geri kalan projenin ise üstün körü gösterildiği bir programken ikinci program ise  dizaynın büyük ölçüde tamamlanmasında sonra verilen kısıtlı NTP(Notice to proceed) sonrası sunulan dizayn bir çok belirsizliğin giderilmesinden dolayı çok daha detaylı olarak hazırlanabilen ve gerçek baseline olarak kabul edilen iş programı  oluyor ve bu program bir performans değerlendirmesi için nispeten daha iyi bir araç oluyor.

ikinci olarak SPI genelde sadece proje bazlı olarak hesaplanıyor, bu da hiçbir proje paydasını(çalışan yada müteahhit) motive edebilecek bir hesaplama değil , bence asıl yapılması gereken her proje paydaşının ayrı bir performans indeksinin hesaplanması fakat bunu da tek bir baseline üzerinden yaptığımızda bütün işlerini 50 gün geciktirmiş fakat bitirmiş bir müteahhit yada sorumlunun SPI’ı 1 iken bu müteahhit yüzünden kendi işine 50 gün geç başlamış , 100 günlük işinin yarısını insan üstün bir çabayla 30 günde bitiren bir müteahhit 0.8 gibi bir SPI a sahip olabiliyor .Spı ile ilgili bir diğer sıkıntıda bir müteahhit kritik olmayan aktiviteleri bitrerek projeyi ciddi bir şekilde geciktirmesine rağmen 1 in üstünde bir SPI a sahip olabiliyor.

Bu sıkıntıları bertaraf etmek için benim aklımdan geçen modifiyeli Spı hesaplaması

A: Gerçekleşmelerden gelen kazanılmış değer

B: hesaplanan paydaşın kendi dışındaki etkilerin yansıtıldığı bir baseline dan hesaplanan planlanan değer

Ve bir katsayı olarak

C: hesaplanan paydaşın kendi dışındaki etkilerin yansıtıldığı baseline tamamlanma süresi

D: Hesaplanan paydaşın etkisiyle oluşan proje tamamlanma süresi

(A/B) * (C/D)

Burada 1 adet güncellenen program ve her paydaşın için 2 tane program yaratmamız gerekiyor,1 tanesi paydaşın kendi dışındaki etkilerin yansıtıldığı diğeri de paydaşın etkisiyle oluşan program

Bloğu buraya kadar okuyan herkesin şu anda kafası iyice karışmaya  başladı o yüzden hemen uygulamaya geçiyorum. Adımları olabilince ayrıntılı anlatmaya çalışayım gene de bazı okurlara karmaşık gelebilir bu yüzden yazının sonunda paylaşacağım linkten dosyaları indirebilirsiniz , yazıyı okurken dosyaları da incelerseniz daha kolay anlayabilirsiniz.

Elimizde 6 kişilik bir ekip olsun

furkan proje müdürü
ahmet satin alma şefi
mehmet sözleşme müdürü
metin şantiye şefi
ali saha mühendisi
veli saha mühendisi

Bu altı kişilik ekip için OBS tanımlamak yerine daha kolay olduğu için bir “org” diye bir aktivite kodu tanımlıyorum.

2 binanın ve 1 yol yapımının olduğu basit bir iş programı uyduruyoruz

Şu anda projenin 2 ayını bitirdiğimizi varsayıyoruz, şöyle bir senaryo ile karşı karşıyayız;

Mehmet sözleşmesini 1 gün gecikme ile bitirmiş,

Ahmet nakliyeciyi bağlayıp 5 günlük işi 3 güne indirmiş (şirket Ahmet gibiler sayesinde ayakta kalıyor)

Furkan baseline da olduğu gibi 5 günde işi yapmış,

İşini takip etmeyen bir arkadaş olduğunu düşündüğüm veli ise 10 günde bitirmesi gereken temel kazısını 20 günde bitirmiş ve daha sonra tutuştuğu için de 9 günde kaba işlerin yüzde 70 ini bitirmiş,

Bence şirketin en başarılı elemanı Ali ise veli yüzünden işine geç başlamış ama süper bir yetenek 0olduğu için 10 günlük temel kazısını 6 günde bitirmiş ve kaba işerin yüzde 30 unu bitirmiş (Ali planlama güncellemelerini yapan mühendisle kanka olabilir bu veriler bana çok gerçekçi gelmedi).

Projenin son durumu

Seklinde oldu, şimdi tüm elemanları performansları değerlendirmek için her elemana ait 2 adet iş programı oluşturuyoruz

Furkan proje müdürü olduğundan onun projesini ana baseline ve güncellenen proje olarak düşünebiliriz çünkü projenin genel performansından zaten Furkan sorumlu.

Mehmet için “mehmet dış etkiler” ve “mehmet kendi etkileri” isimli 2 proje oluşturuyoruz. Mehmet’in sadece tek aktivitesi olduğu ve buda başlangıç aktivitesi olduğu için herhangi bir dış mihrakın Mehmet’in performansını etkilemesi mümkün değil o yüzden Mehmet’in “mehmet dış etkiler” projesi baseline ile aynı olacak

“mehmet dış etkiler” programının asıl amacı ise Mehmet’in yaptığı 1 günlük gecikmenin normalde proje bitişini nasıl etkilediğini Mehmet’in suratına vurmak. Eğer bu bir gecikme analizi çalışması olsaydı bu işlemi 1 günlük gecikme diye bir aktivite oluşturup projeye ekleyerek yapabilirdik fakat bu işlemleri yapacak insanın işini kolaylaştırmak için sadece aktivite süresini arttırarak bu etkiyi gösterebiliyoruz.

Gördügünüz gibi mehmetin hatası tüm projeyi 1 gün uzattı , klasik SPI hesaplamasında mehmet projeyi 1 günde uzatsa 10 günde uazatsa aktivitesi bittiği için SPI I 1 olarak hesaplanacaktı benim alternatif hesaplamamda ise mehmetin yaptığı bu hatayı ona ödeteceğiz , burnundan fitil fitil getireceğiz.

Mehmet için yaptığımız işlemin aynısını ahmet içinde yaporuz , bu kez mehmet hametin işini 1 gün geçiktirdiği için “ahmet dış etkiler” programını düzenlememiz gerekiyor.

Gördüğünüz gibi Ahmet’in planlanan günleri bir gün ileri atılmış oldu

Ahmet’in kendi etkileri programında ise Ahmet’in aktivitesinin süresini azaltarak herkes işini düzgün yapsaydı iş programının nasıl 2 gün erken bitebileceğini görüyoruz.

Metine geldiğimizde ise farklı bir durumla karşı karşıyayız metinin programındaki aktiviteler sadece metinin değil Ali ve velinin de aktiviteleri olmalı çünkü bu ikisinin başarısı veya başarısızlığı metininde performans indeksini etkilemeli.

Metin dış etkiler programında inşaat ekibini etkileyen tek aktivite ekskavatör satın alınmasının 1 gün önce bitmesi olduğu için bir tek bu aktiviteyi 1 gün önce bitirdik ve inşaat ekibi tüm işleri düzgün yapsaydı projenin bir gün önce biteceğini görüyoruz.

Metinin kendi etkileri programına baktığımızda alinin müthiş performansı sayesinde projeyi zamanında bitirebilme ihtimali doğmuşken aslında metin işe 1 gün önce başladığı için aslında 1 günlük bir performans kaybı mevcut buda bizim hesaplamamızı etkileyecek.

Aynı işlemleri veli

Ve Ali için yapıyoruz

Şimdi elimizde 12 adet iş programı var ve raporlamanın zor kısmını bitirmiş durumdayız çünkü bundan sonraki kısım her ay hazırladığımız şablon sayesinde kendiliğinden oluşacak.

Şablonu oluşturmaya performans simli bir tablo oluşturarak başlıyoruz

Bu tablodaki alanlarını açıklamadan önce bu hesaplamanın şöyle bir mantığı olacak, eğer bir çalışanın altında başka bir çalışan varsa bu çalışanın performansı kendi altında çalışanların performansından da etkilenecek yani bir ülke müdürünün performansını hesaplarken kendi bireysel olarak yaptığı aktivitelerin yanı sora altında çalışan proje müdürleri veya mühendislerinde performansını hesaba katacağız. Şimdi tablodaki alanları açıklarsak

İsim: performansını değerlendireceğimiz proje paydaşları, bu örnekte hepsi çalışan olmasına rağmen aynı değerlendirmeyi projede çalışan müteahhit firmalar içinde kullanabiliriz

Parent: çalışanın üstünde buluna -kişi

Org: primavera raporundan veri alabilmek için yaptığımız bir eşleştirme alanı

A, B, C, D: yazının ilk başında açıkladığımız değerler

r: C/D katsayısı bunu ayrı olarak hesaplamamızın nedeni bu değeri organizasyon hiyerarşine katmak istemiyoruz , diğer hesaplamalarda ise bu hiyerarşiyi kullanacağız

parent SPI: organizasyon hiyerarşisini göz önünde bulundurarak yaptığımız SPI hesaplaması

Performans: bu çalışmanın son ürünü

İkinci adım olarak dışarıdan alacağımız verileri ayarlamamız gerekiyor burada 2 çeşit verimiz olacak

  • Pmdb serverdan direkt olarak alacağımız veriler
  • Pmdb serverda hesaplanmayan “ time distributed” veriler

Pmdb serverden direkt alacağımız tablolar TASK, PROJECT, ACTVCODE, TASKACTV olacak,bu verileri almak için ODBC driver kurmamız gerekiyor , nasıl kuracağımız ile ilgiliyazıya

http://planlamadanismanlik.com/sqlite-veri-tabani-icin-odbc-baglantisi-yapilmasi/

bağlantısından ulaşabilirsiniz

Bu tabloları excele almak için fotoğraftaki opsiyonu seçip, üstte belirttiğim tabloları yüklüyoruz.

işimiz bittiğinde artık excelde 4 adet query (sorgu) oluşmuş durumda.

Task sorgusunu power query editör de açıyoruz

Sadece fotoğraftaki kolonları seçiyoruz, merge queries opsiyonunu seçip

Project id alanı üzerinden 2 query i birleştiriyoruz

Project tablosundan da sadece proj short name alanını seçip sadece “ana” projesini filtreliyoruz, daha sonra proje id alanlarından taskact tablosunu birleştirip

Aynı işlemi actcode tablosu içinde yapıp shortname alanını seçiyoruz ve elimizde artık güncellediğimiz iş programının istediğimiz detaylarına sahip bir sorguya sahibiz

SPI için kullanacağımız deger Cost olacak , bu konuda herkesin farklı bir yaklaşımı var ben daha kesin bir değer olduğu için Cost seçiyorum, burdada nbenim tercihim bu değeri güncellenen bir iş programından almaktansa aktivite id ve Cost değerlerinin olduğu sabit bir excel tablosunu tercih ediyorum . daha önce kullandğım programlarda yanlışlıkla başlatıp sonra başlamamış hale getirdiğim aktivitelerde çeşitli cost hesaplaması sıkıntıları yaşadım , o yüzden eğer excelde hesaplıyabiliyorsam o değeri excelin hesaplamasını tercih ediyotrum. Bu yüzden  COST isimli yeni bit tablo oluşturuyoruz.

Kırmızı dikdörtgen içindeki tuşu kullanarak tabloyu bir sorguya dönüştürüyoruz ve cost sorgusunu activity Id üzerinden task sorgusuna ekliyoruz

Bizim hedefimiz zamansal performansı ölçmek olduğu için kullanacağımız yüzde “ duration percent complete” olmalı , biraz araştırınca PMDB nin “ duration percent complete” i bir tabloda tutmadığını anlıyorum , bunu hesaplamak içinde “EARNED” adlı yeni hesaplanan alan yaratmalıyız ve formülümüz

=(1-([@[REMAIN_DRTN_HR_CNT]]/[@[TARGET_DRTN_HR_CNT]]))*[@[COST.Budgeted Total Cost]]

Olmalı şimdi elimizde tüm paydaşların güncel tabloda ne kadar kazanılmış değerinin olduğu bir tabloya ve toplamda 5 adet sorguya sahibiz

PMDB tablolarının kapsamlarını anlamak için

https://docs.oracle.com/cd/E17462_01/Reporting_Database/R2andAnalytics/OdsFieldMapList.html

Linkine bakabilirsiniz

Şimdi performans tablosuna geri dönüyoruz, Furkan tüm projenin sahibi olduğu için

Furkan için A alanının formülünü

=SUMIFS(TASK[EARNED],TASK[PROJECT.PROJ_SHORT_NAME],"=ana")

Olarak tanımlıyoruz

Diğerleri için ise

=SUMIFS(TASK[EARNED],TASK[PROJECT.PROJ_SHORT_NAME],"=ana",TASK[ACTVCODE.SHORT_NAME],"="&[@isim])

Formülünü kullanıyoruz böylece A değerlerini hesaplamış olduk

Artık 2. Kısım olan time distributed verileri oluşturmamız gerekiyor

İlk önce time distributed aktivite raporu oluşturmamız gerekiyor, burada dikkat etmemiz gereken şeyler

Burada ordinal dates i seçmemizin sebebi raporun date formatını Excel tanıyamayabiliyor bunun yerine sayısal bir değer kullanıyoruz

Raporu oluşturduktan sonra tüm projeleri birlikte açıp raporu çalıştırıyoruz, alttaki dosya oluştuktan sonra buradaki tüm bilgileri Excel dosyamıza kopyalıyoruz

Ve bu raporu tablo haline getiriyoruz

Tabloyu sorgu haline getiriyoruz, total cost kolonunu kapatıyoruz, tablonun mevcut hali datayı süzmemize olanak vermiyor o yüzden 127 günü gösteren kolonları seçip

Unpivot columns seçeneğini seçiyoruz

Böylece her elemanın her projede her gün için planlanan değerlerinin olduğu bir tablo elde ettik

Kolonun adını days passed olarak değiştirip data type’ını decimal numbera çeviriyoruz.

Bu tablodan istediğimiz veriyi alabilmemiz için rapor tarihi ile proje başlangıcı arasındaki farkı bulmamız gerekiyor o yüzden 3 tane hücre belirliyoruz

Bu veriyi çok kullanma ihtimalimiz olduğu için passed days hücresini “passed” olarak isimlendiriyoruz.

Furkan tüm projenin sahibi olduğu için

Furkan için B alanının formülünü

=SUMIFS(DIST[Value],DIST[Project ID],"=ana",DIST[days passed],"= "&passed)

Olarak tanımlıyoruz

Diğerleri için ise

=SUMIFS(DIST[Value],DIST[Project ID],"=ana-"&[@isim]&"-1",DIST[days passed],"= "&passed,DIST[org],[@org])

Formülünü kullanıyoruz

C ve D alanlarını hesaplamak için önce Project sorgusunu düzenlememiz gerekiyor, Sorgunun son hali

Oluyor, sorgunun ismini “PROJECTS” olarak değiştiriyoruz

C değerlerini hesaplarken Furkan için

=VLOOKUP("ana",PROJECTS,3,0)-VLOOKUP("ana",PROJECTS,2,0)

Diğerleri için

=VLOOKUP("ana-"&[@isim]&"-1",PROJECTS,3,0)-VLOOKUP("ana-"&[@isim]&"-1",PROJECTS,2,0)

Formüllerini kullanıyoruz

D değerlerini hesaplarken Furkan için

=VLOOKUP("ana-baseline",PROJECTS,3,0)-VLOOKUP("ana",PROJECTS,2,0)

Diğerleri için

=VLOOKUP("ana-"&[@isim]&"-2",PROJECTS,3,0)-VLOOKUP("ana-"&[@isim]&"-2",PROJECTS,2,0)

Formüllerini kullanıyoruz

r alanı içinde

=[@C]/[@D]

Formülünü kullanıyoruz

Şu an elimizde her isim için bir değerimiz fakat biz çalışanlar için hiyerarşi yapısın oluşturup üstteki çalışanın performansının alttaki çalışanların performansından etkilenmesini istiyoruz, ayrıca ülke müdürü gibi projelere direkt etkisi olmayan fakat birden fazla proje için değerlendirme yapmamız gereken çalışmalar için hiyerarşi yapısını kullanmaktan başka bir alternatifimiz yok. Hiyerarşi yapısını oluşturmamız için DAX (Data Analysis Expressions) denen hesaplamaları kullanmamız gerekiyor ve fonksiyonlar ise excelde ve query alanlarında kullanılamıyor bu yüzden PowerPivot özelliği ile veri modeli oluşturmalıyız

Add to data model seçeneğini tıklıyoruz ve karşımıza alttaki gibi bir ara yüz çıkıyor

Bu tabloya 4 adet hesaplanmış kolon ekliyoruz sırasıyla adları ve formülleri

Path =path([isim],[parent])

org1 =PATHITEM([path],1)

org2 =PATHITEM([path],2)

org3 =PATHITEM([path],3)

Diagram view i seçip org1 org2 org3 alanlarını seçip create hierarchy opsiyonunun seçiyoruz

Oluşturduğumuz hiyerarşinin son hali yandaki gibi oluyor

Ve bu veri modelinden yeni bir pivot table oluşturuyoruz

Burada da gördüğünüz gibi metinin tek başına planlanan değeri 3000 iken alt çalışanları da işe kattığımızda 57500 oluyor şimdi SPI hesaplamalarını yapmamız gerekiyor burada dikkat etmemiz gereken nokta bunu performans tablosunda yapsaydık üst grup alttaki SPI ları toplayacağı için 5 6 gibi abuk subuk rakamlar görecektik bunu engellemek için bir calculated fied oluşturmamız gerekiyor.

Böylece her çalışan için hiyerarşiye göre bir SPI hesaplaması yapılmış oldu.

Performans tablosuna geri dönüp  parent SPI kolonuna

=VLOOKUP([@isim],PIVOT!A:D,4,0)

Formülünü, performans kolonuna ise

=VLOOKUP([@isim],PIVOT!A:D,4,0)

Formülünü yazıyoruz

Artık elimizde tüm çalışanlar için performans değerimiz oluştu , burada r değerine bazı modifikasyonlar yapabiliriz , mesela 600 günlük bir projede 6 günlük gecikme yüzde 1 olarak hesaplanıyor eğer bunun daha önemli olduğunu düşünüyorsanız r değerini C/D nin karesi küpü gibi alternatifler yapabiliriz

Son olarak ta power view özelliği ile bu çalışanları görsel olarak sıralayan bir çalışma yapıyoruz

Power view özelliğini ilk defa kullanıyorum, bunu tercih etmemim sebebi internetten öğrendiğim kadarıyla power BI ve SharePoint’te bu raporları yayınlayabileceğimizin yazmasıydı, bu özelliği aktif etmek için 2 gün uğraştım internet forumlarından bulduğum yalan yanlış bilgiler ile regeditten Excel ayarlarını bile değiştirdim , en sonunda Microsoft’un sitesinde bu özelliğin hangi Office 365 planına ait olduğunu buldum benim Office 365 planım business plus olmasına ve normalde Office pro özelliklerine sahip olmasına rağmen bu özellik için minimum enterprise e3 planını kullanmam gerektiğini anladım , sonuç olarak internetteki yanlış bilgilerden regedit  agd olduğu için  bilgisayara format atmak ve bir üst Office 365 sürümüne geçmek zorunda kaldım bence Microsoft plan içeriklerini daha açıklayıcı yapmalı , ayrıca şunu da belirteyim okurlarını en fazla seven blogger benim , insanlara Bir şeyler öğreteceğim diye çektiğim çilenin haddi hesabı yok.

Bu yazının olması gerekenden 5 kat daha uzun olması ve benim de konuya daha hâkim olabilmem için power view ı daha etkin kullanma ve yayınlama ile ilgili başka bir yazı yayınlamayı planlıyorum.

Bu çalışmayla ilgili ilk söyleyebileceğim şey içinde birçok özelliğin nasıl kullanılacağını gösteren bir çalışma oldu , böyle bir hesaplamanın karışık bir projede daha zor olacağının farkındayım ama bu çalışmayı kendi yapmaya çalışan biri planlama raporu oluştururken karşısına çıkabilecek birçok problemi nasıl çözebileceğini görecektir. İkinci olarak eğer bir projede bu hesaplama yöntemi hayata geçirilirse çalışanların iş programına ilgisi oldukça artacak ve herkes iş programına hâkim olacaktır , buda iş programını bir prosedür dokümanından çıkartıp yaşayan bir dokümana çevirecektir.

Çalışma sonucu ortaya çıkan dosyaları

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EmBdy_-xMqhNpILo67XdvbUBjJrrFxrEpmBr6Sr3xGVwGw?e=Ik7e6T

linkinden indirebilirsiniz, 12 adet proje ve 1 adet raporu import etmekle uğraşmamanız için direkt olarak SQLite dosyasını koyuyorum, bağlanabilmeniz için

username: admin

password:asd123

Son olarak da buradan Microsoft Türkiye’ye seslenmek istiyorum , milyonlarca inşaat firması çalışanlarını birer yarış atı gibi sıralayabilecekleri bu tür opsiyonları fark edip Office sürümlerini yükselttiklerinde eminim ki beni de görürsünüz.

Primavera için metraj esaslı hızlı kaynak ataması yapılması

Primavera kullanıcısı planlama uzmanları için kaynak ataması her zaman sıkıntılı bir süreç olmuştur. MS Project’te kaynak ataması sözcük bazlı yapıldığı için excelde bazı manipülasyonlar yapıp direkt MS Project’e atmak bize zaman kazandırırken Primavera Database tabanlı olduğundan bu işlemi yapmak süre almaktadır.

Özellikle ihale süreci gibi kısıtlı zamanlarda elimizde tüm metrajlar ve analizler olmasına rağmen bunları iş programına aktarmak büyük sıkıntı olabiliyor. Eskiden bu zorluğu elimine etmek için MS access programını kullanırken yakın zamanda Excel programının Microsoft query özelliğinin daha basit bir çözüm olacağını fark ettim. Bununla ilgili bir örneği bloğuma koymanın birçok insanın işinin kolaylaştıracağını düşündüm.

Öncellikle hayali bir örnek proje oluşturmakla başlayacağım (yazı sonunda örnek XER dosyasının indirme bağlantısını paylaşacağım). Bu sistemin işleyebilmesi için her analiz için ayrı bir aktivite tanımlamanız gerekmekte, yani sizin metraj tablonuzda beton ve demir için ayrı analizler varsa sizin güçlendirilmiş beton gibi bir aktiviteniz olmamalı onun yerine demir döşemesi ve beton dökülmesi gibi 2 ayrı aktiviteniz olmalı. Toplam 4 aktiviteli bir iş dizisinin 8 defa tekrarlandığı bir iş programı yapalım, bunlar

  • Kazı yapılması
  • Koruma betonu dökümü
  • Temel çelik döşenmesi
  • Beton dökümü

olsun

Metrajlarımız ise 200 m3 , 20 m3 , 8 ton , 100 m3 olsun

Normalde ihale aşamasında düzgün fiyat belirmek için şirketler analizlerini yapmış olurlar, bu örnekte yapılmadığını farz ediyoruz , bu durumda yapılması gereken ya önceki tecrübelerden bir analiz oluşturmak yada bazı devlet kurumlarının analizlerini kullanmaktır. Benim önceki tecrübelerim kurumların analizlerini abartılı olduğu yönünde fakat elimizde hiçbir şey yoksa bunları kullanmak mantıklı olabiliyor.

İnternetten bulduğum analizler

https://www.birimfiyat.net/y.15.001-1a-makine-ile-yumusak-ve-sert-toprak-kazilmasi-serbest-kazi

https://www.birimfiyat.net/y.16.050-03-beton-santralinde-uretilen-veya-satin-alinan-ve-beton-pompasiyla-basilan-c-16-20-basinc-dayanim-sinifinda-beton-dokulmesi-beton-nakli-dahil

https://www.birimfiyat.net/23.002-14-50-kalin-betonarme-demiri-bukulup-dosenmesi

Bu aşamada dikkat etmemiz gereken şey bu çalışma bir kesin hesap olmadığı için her şeyi olabildiğince genel tanımlamalıyız.

İlk önce bir Excel tablosu açıyoruz ve ilk sekmeye analizler diye bir tablo ekliyoruz,

Elimizdeki analizlere göre tabloyu ekteki gibi dolduruyoruz. Böylece analizlerimiz ve kullanacağımız kaynaklarımız ortaya çıkmış oldu

İkinci adım olarak aktivitelere analizleri atamamız gerekiyor, örneğimiz küçük bir program olduğu için bunu excelde yapabiliriz fakat Primaverada hem filtreleme hem de WBS yapısını daha rahat kullandığımız için ben Primaverada yapmayı tercih ediyorum.

Primaverada 1 adet aktivite kodu 1 adette “user defined field” oluşturuyoruz, aktivite kodunun ismi analiz “user defined field” ismi ise metraj olarak tanımlıyoruz ve “unit” olarak number seçiyoruz ve her aktivite için bu alanları dolduruyoruz.

Artık elimizde her aktivitenin bir analizi ve metrajının olduğu bir iş programına sahibiz.

Bu bilgiyi Excel’e aktarmamamız gerekiyor, bu sürekli değişen bir alan olsaydı Excel’in “get data” özelliği ile veri tabanından almayı düşünebilirdik fakat bu tek seferlik oluşturulan bir data olduğu için direk olarak Excel’e kopyala yapıştır yapmayı tercih ediyorum , sonraki bir yazımda veri tabanından direkt olarak Excel’e veri aktarmayı anlatmayı planlıyorum

Excel’de 2. sekmede aktiviteler isimli bir tablo oluşturup, fotoğrafta görüldüğü gibi düzenliyoruz.

Daha sonra bu Excel dosyasını kapatıp yeni bir Excel dosyası açıyoruz,

Data>get data>from Other sources >from Microsoft query  seçeneğini seçiyoruz,

Buradan “Excel files” seçeneğini seçip gördüğümü tüm kolonları seçiyoruz

Next tuşuna bastığımızda tablolar arasında bir bağlantı olmadığı uyarısı veriyor bir sonraki adımda analiz ve analiz ismi kolonlarını birbirine bağlıyoruz

Bir sonraki adımda “query” ekranından çıkıyoruz ve önümüze altta gözüken  form geliyor

Tablomuzu nasıl eklememiz gerektiğini gösteren ekran geliyor burada ok tuşuna basıyoruz. Şimdi her kaynağın aktivite metrajı ve analiz biriminin olduğu bir tablo oluşturmuş durumdayız yenidir kolonda metraj ve adet kısımlarını çarpıyoruz

Elimizdeki tüm kaynakları Primaverada tanımlıyoruz

Elimizdeki Excel dosyasından sadece activity id resource id ve budgeted units kısımlarını import dosyasına kopyalayarak import dosyasını oluşturuyoruz ve import dosyasını primaveraya yüklüyoruz.

Bloğu okuyanların inceleyebilmesi için xer, analiz, query ve import dosyasını indirebileceğiniz bir linki aşağıda veriyorum

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EiPHjHIjum5KkHS_CSXyw9IBmt09xCOnvFiVQU2QtMKOFQ?e=Rv9bmI