14 Ocak 2014 Salı

'RSClientController' is undefined hatası

ReportViewer ile rapor görüntüleme aşamasında karşıma çıkan bu hatanın çözümünü şöyle buldum:
- IIS'te ilgili web sitesini bul. 'Handler Mappings' e gir.
- 'Add Managed Handler' a tıkla.
- Request path: Reserved.ReportViewerWebControl.axd
- Type: Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
- Name: Reserved.ReportViewerWebControl.axd
Ekleme işlemini yaptıktan sonra görüntülemede bir problem kalmadı.



Reporting Services için bazı tarih ifade örnekleri

Yılın ilk günü:
DateSerial(YEAR(Today()),1,1)

n yıl sonranın ilk günü:
DateSerial(YEAR(Today())+n,1,1)

Ayın ilk günü:
DateAdd("d",1-DatePart("d",Today()),Today())

Ayın son günü:
DateAdd("d", -1.0 * DatePart("d", Today().AddMonths(1)), Today().AddMonths(1))

B ir önceki ayı son günü:  
DateAdd("d", -1.0 * DatePart("d", Today()), Today())






Oracle nesnelerinin, ve içeriklerinin tanım tabloları

Örnek:
Elimizde, farklı durumlara göre yüklü miktarda işlem yapılması gereken bir veri yığını var. Kalem kağıt olsa, dip yekün alıp bir yere not alarak bu rakam üzerinden işleme devam etmek için sonucu muhafaza etmek isteriz. İşte geçici tablolar da tam bu işe yarıyor.Ham veriyi işleyip gerekli düzene soktuktan sonra, verinin bu halini geçici tablolara kaydederiz. Peki normal bir tablo create edip oraya kaydetsek olmaz mı? Olur, ama birden fazla kullanıcının aynı anda, aynı ham veriye ulaşıp aynı şekilde bir rapor hazırlamaya çalıştığını düşünelim. Bu işi yapmaya çalışan her kullanıcı için üretilen ara tablo, işlenmiş verilerle yeniden doldurulmaya çalışılacaktır. Bu işlem yeteri sıklıkta yapılırsa tablo bir türlü dolamayacağı için kimse rapora ulaşamayacaktır. Geçici tablolar veri kümelerinin, her Session için, hiçbirinin diğer session'larda oluşturulan verilere ulaşamayacağı ve ayrı ayrı hepsinin de aynı tablo ismi ile verileri muhafaza edileceği şekilde saklanmasına olanak sağlar. Yani A şahsı ham veriyi işleyip, sadece X session'ına özel TEMP_TABLE'da, B şahsı da aynı şekilde Y session'ına özel TEMP_TABLE'da hem de bu işlemleri aynı anda yaparak saklayabilir.
Geçici tabloların normal tablolardan Syntax olarak çok da farkı yok.

CREATE GLOBAL TEMPORARY TABLE TEMP_TABLE1
(
  ID NUMBER,
 
ENTRY_DATE DATE
)
ON COMMIT PRESERVE ROWS;

Burada, PRESERVE ROWS, geçici tablodaki verilerin Session sonlanana kadar tabloda barındırılacağını, Session sonunda ise tablodan silineceğini belirtir. Session değil de Commit işlemi bazında bu işlemin olması için DELETE ROWS yazmak yeterlidir.

Oracle JOIN ile UPDATE işlemi

Bir tabloda Update etmek istediğimiz alanın değerinin başka bir tablodan gelmesi gerekiyorsa, bunu alt sorgularla yapıyoruz.

update tablo1
set son_guncelleme_tarihi =
(
  select max(guncelleme_tarihi)
  from tablo2 where tablo1.kayit_no=tablo2.kayit_no
)

Peki birden çok alanın update edilmesi gerektiği durumlarda ne yapacağız? Her biri için birer alt sorgu yazmak yerine MERGE kullanımı daha yerinde olacaktır.


MERGE INTO TABLO1 T1
USING
(
  SELECT 
  TAB1.ROWID AS RID,
  TAB2.GUNCELLENECEK_SUTUN1 AS GUNC1,
  TAB2.GUNCELLENECEK_SUTUN2 AS GUNC2,
  TAB2.GUNCELLENECEK_SUTUNX AS GUNCX
  FROM TABLO2 TAB2, TABLO1 TAB1
  WHERE TAB1.PK_SUTUN=TAB2.PK_SUTUN
) T2
ON(T1.ROWID=T2.RID)
WHEN MATCHED THEN UPDATE
SET
  T1.GUNCELLENECEK_SUTUN1=T2.GUNC1,
  T1.GUNCELLENECEK_SUTUN2=T2.GUNC2,
  T1.GUNCELLENECEK_SUTUNX=T2.GUNCX

Control.Visible ve css Display özelliklerinin Javascript üzerindeki etkisi

Kendi oluşturduğum bir CreditCard.ascx kontrolü içindeki form elemanlarına girilen verilerin validasyonlarını kendi içinde Javascript kullanarak yapıyorum. Bu kontrolü herhangi bir aspx sayfasına ekleyip, visible özelliğiini false yapınca, içeriğindeki Javascriptin yüklenmediğini gördüm. Problemi gidermek için, kontrolün (veya içinde bulunduğu panel veya div'in) görünürlük ayarını, Visible özelliğini değil, CSS->Display özelliğini kullanarak yaptım. Bu şekilde Javascript, kontrol görünür olsa da olmasa da sayfaya yükleniyor.

divYeni.Style["display"] = "none"; // "none" görünmez "block" görünür.

XML formatında kaydedilmiş bir alanın içeriğine ulaşmak

TABLO1 isimli tablomuzda, PARAMETRELER isimli alanın içeriği XML formatında kayıtlı olsun.
SELECT parametreler FROM TABLO1

PARAMETRELER
  

XML örneğinde 2 adet parametre bulunmaktadır. Bu parametrelerin adları ve değerlerine ulaşmak için:

select
    substr(extract(xmltype(parametreler),'/parameters/parameter[position()=1]/@id'),0)aspar1_adi,
    substr(extract(xmltype(parametreler),'/parameters/parameter[position()=1]/@value'),0)aspar1_degeri,
    substr(extract(xmltype(parametreler),'/parameters/parameter[position()=2]/@id'),0)aspar2_adi,
    substr(extract(xmltype(parametreler),'/parameters/parameter[position()=2]/@value'),0)aspar2_degeri
from TABLO1

PAR1_ADI           PAR1_DEGERI   PAR2_ADI           PAR2_DEGERI
OGR_KODU        055                       TARIH                 30/07/2012

TOAD for Oracle DataGrid üzerinden Update

PL/SQL Developer'da select sorgusunun sonuna FOR UPDATE ekleyerek grid hücresi üzerinden Update etmek mümkünken, TOAD'da bunu denedim ve sonuç alamadım. Bu özelliğin TOAD'da olmaması beni hayal kırıklığına uğratmıştı ki, kurbağa karşıma bir sürprizle çıkageldi. TOAD'ta yazılan select sorgusuna ROWID eklenerek bu özelliği mümkün kılabiliyorsunuz. Şöyle ki:

SELECT COLUMN1, COLUMN2 FROM TABLE1

sorgusu, dönen grid üzerinden elle update'e izin vermezken,

SELECT COLUMN1, COLUMN2, ROWID FROM TABLE1

ile bu işlemi yapabiliyorsunuz. COMMIT etmeyi unutmayın.!.