Yorumları: 176
Konuları: 0
Kayıt Tarihi: 01-09-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 552 Acemi
(18-04-2019, Saat: 13:42)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Alıntı:Diğer bi takıldığım yer. Codu yazdım çalıştırdım bir yerde hata var pat diye bir hata çıkıyor ekrana ama hatamın nerede olduğunu gösteren yada neyden hata verdiğini göstermeyen bir hata ekranı.
Bu tarz bir hataya örnek verebilir misiniz ? Ben Delphi'nin 1 versiyonundan beri Delphi ile çalışırım ve bahsettiğiniz gibi bir durumla karşılaştığımı hatırlamıyorum. Bir şeyleri eksik yapıyor olabilirsiniz, izah edebilirseniz neden bahsettiğinizi; yardımcı olmaya ya da sorunu anlayıp yorum yapmaya gayret edelim.
Hocam zaten ben Hata yaptığımı söylüyorum hata şöyle oluyor
Örnek vereyim.
SqlString := TStringBuilder.Create;
SqlString.Append(' DECLARE @BASTARIH DATE = CONVERT(DATE,''' + dtIlkTarih.Text + ''',105) DECLARE @BITTARIH DATE = CONVERT(DATE,''' + dtSonTarih.Text + ''',105) DECLARE @SUBE VARCHAR(MAX) = ''0'' ');
SqlString.Append(' DECLARE @SonAy INT = MONTH(@BITTARIH) DECLARE @Sayac INT = @SonAy DECLARE @CL NVARCHAR(MAX) ');
SqlString.Append(' IF OBJECT_ID(''tempdb..#ICMAL'') IS NOT NULL DROP TABLE #ICMAL; IF OBJECT_ID(''tempdb..#SUBE'') IS NOT NULL DROP TABLE #SUBE; ');
SqlString.Append(' IF OBJECT_ID(''tempdb..##STOKLAR'') IS NOT NULL DROP TABLE ##STOKLAR; ');
SqlString.Append(' CREATE TABLE #ICMAL(STOK_KODU VARCHAR(MAX),STOK_ADI VARCHAR(MAX),SATIS_FIYATI DECIMAL(28,8),ALIS_FIYATI DECIMAL(28,8) ');
SqlString.Append(' ,BIRIM CHAR(5),KOLIICI INT,DEVREDEN DECIMAL(28,8),GIREN DECIMAL(28,8),CIKAN DECIMAL(28,8),KALAN DECIMAL(28,8) ');
SqlString.Append(' ,SUBE_BAKIYE DECIMAL(28,8),SATIS_MIKTARI DECIMAL(28,8),BEKLEYEN_SIP_MIKTARI DECIMAL(28,8), URUN_GRUBU VARCHAR(MAX) ');
SqlString.Append(' ,URETICI_KODU VARCHAR(MAX),KOD_1 VARCHAR(MAX),KOD_2 VARCHAR(MAX),KOD_3 VARCHAR(MAX) , KOD_4 VARCHAR(MAX),KOD_5 VARCHAR(MAX)) ');
SqlString.Append(' INSERT INTO #ICMAL (STOK_KODU,STOK_ADI,URUN_GRUBU,URETICI_KODU,KOD_1,KOD_2,KOD_3,KOD_4,KOD_5) ');
SqlString.Append(' SELECT STOK_KODU,STOK_ADI,(SELECT DBO.TRK_CEVIR(GRUP_ISIM) FROM TBLSTOKKOD2 WITH (NOLOCK) WHERE (GRUP_KOD = STS.KOD_2)) ');
SqlString.Append(' ,URETICI_KODU,KOD_1,KOD_2,KOD_3,KOD_4,KOD_5 FROM dbo.TBLSTSABIT STS WITH (NOLOCK) ' + GelenKisit + ' ');
SqlString.Append(' SELECT SUBE_KODU INTO #SUBE FROM dbo.TBLSUBELER WITH (NOLOCK) WHERE AKTIF =''E'' AND SUBE_KODU NOT IN (''0'',''100'',''101'',''102'',''103'',''104'',''105'',''106'',''107'',''302'',''401'',''402'',''403'',''99'',''32767'',''-1'') ');
SqlString.Append(' UPDATE #ICMAL SET DEVREDEN = ISNULL ((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''G'') ');
SqlString.Append(' AND (STHAR_TARIH < CONVERT (DATE, @BASTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0) ');
SqlString.Append(' UPDATE #ICMAL SET DEVREDEN = DEVREDEN - ISNULL ((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''C'') AND (STHAR_TARIH < CONVERT (DATE, @BASTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0) ');
SqlString.Append(' UPDATE #ICMAL SET GIREN = ISNULL((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''G'') ');
SqlString.Append(' AND (STHAR_TARIH BETWEEN CONVERT (DATE, @BASTARIH, 105) AND CONVERT(DATE, @BITTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0) ');
SqlString.Append(' UPDATE #ICMAL SET CIKAN = ISNULL((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''C'') ');
SqlString.Append(' AND (STHAR_TARIH BETWEEN CONVERT (DATE, @BASTARIH, 105) AND CONVERT (DATE, @BITTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0) ');
SqlString.Append(' UPDATE #ICMAL SET KALAN = ISNULL(DEVREDEN + GIREN - CIKAN,0) UPDATE #ICMAL SET SUBE_BAKIYE = ISNULL((SELECT SUM(STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (STHAR_GCKOD = ''G'') AND ');
SqlString.Append(' (STHAR_TARIH <= @BITTARIH) AND (STOK_KODU = #ICMAL.STOK_KODU) AND (SUBE_KODU IN (SELECT SUBE_KODU FROM #SUBE))), 0) ');
SqlString.Append(' UPDATE #ICMAL SET SUBE_BAKIYE = SUBE_BAKIYE - ISNULL((SELECT SUM(STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (STHAR_GCKOD = ''C'') ');
SqlString.Append(' AND (STHAR_TARIH <= @BITTARIH) AND (STOK_KODU = #ICMAL.STOK_KODU) AND (SUBE_KODU IN (SELECT SUBE_KODU FROM #SUBE))), 0) ');
SqlString.Append(' UPDATE #ICMAL SET BIRIM = (SELECT OLCU_BR1 FROM dbo.TBLSTSABIT WHERE STOK_KODU=#ICMAL.STOK_KODU) UPDATE #ICMAL SET KOLIICI = (SELECT PAYDA_1 FROM dbo.TBLSTSABIT WHERE STOK_KODU=#ICMAL.STOK_KODU) ');
SqlString.Append(' UPDATE #ICMAL SET ALIS_FIYATI = ISNULL((SELECT TOP (1) FIYAT1 FROM TBLSTOKFIAT WITH (NOLOCK) WHERE STOKKODU = #ICMAL.STOK_KODU AND A_S = ''A'' AND (BASTAR<=@BITTARIH) AND ((BITTAR IS NULL) OR (BITTAR >= @BITTARIH)) ORDER BY BASTAR DESC),0) ');
SqlString.Append(' UPDATE #ICMAL SET SATIS_FIYATI = ISNULL((SELECT TOP (1) FIYAT1 FROM TBLSTOKFIAT WITH (NOLOCK) WHERE STOKKODU = #ICMAL.STOK_KODU AND A_S = ''S'' AND (BASTAR<=@BITTARIH) AND ((BITTAR IS NULL) OR (BITTAR >= @BITTARIH)) ORDER BY BASTAR DESC),0) ');
SqlString.Append(' UPDATE #ICMAL SET BEKLEYEN_SIP_MIKTARI = ISNULL((SELECT KALAN_MIK FROM [dbo].[FN_BEKLEYEN_SIP] (#ICMAL.STOK_KODU ,@SUBE)),0) ');
SqlString.Append(' SELECT STOK_KODU,SUM(STHAR_GCMIK) AS MIKTAR ,MONTH(STHAR_TARIH) AS AY INTO ##STOKLAR FROM TBLSTHAR WITH (NOLOCK) WHERE STHAR_GCKOD =''C'' AND STHAR_HTUR IN(''J'',''K'') AND STHAR_TARIH ');
SqlString.Append(' <= @BITTARIH AND SUBE_KODU BETWEEN 0 AND 800 GROUP BY STOK_KODU,MONTH(STHAR_TARIH) ');
SqlString.Append(' DECLARE @cols AS NVARCHAR(MAX) ,@query AS NVARCHAR(MAX);SELECT @cols = STUFF ((SELECT '','' + QUOTENAME (col + ''AY_'' + CAST(t.AY AS VARCHAR(20))) FROM ##STOKLAR t ');
SqlString.Append(' CROSS APPLY (SELECT '''',MIKTAR) c(col, so) GROUP BY col,T.AY ORDER BY AY FOR XML PATH (''''), TYPE).value (''.'', ''NVARCHAR(MAX)''),1,1,'''' ); ');
SqlString.Append(' SET @query = ''SELECT STOK_KODU,'' + @cols + '' INTO ##SATIS from (SELECT STOK_KODU, col = col + ''''AY_'''' + cast(AY as varchar(4)), value from ##STOKLAR t ');
SqlString.Append(' cross apply(select '''''''', MIKTAR) c (col, value) ) x pivot (sum(value) for col in (''+ @cols + '') ) p ''; EXECUTE sp_executesql @query; ');
SqlString.Append(' SELECT * INTO ##TUMSTOK FROM (SELECT ICM.STOK_ADI AS ADI,ICM.DEVREDEN,ICM.GIREN,ICM.CIKAN,ICM.KALAN,ICM.BIRIM,ICM.KOLIICI,ICM.STOK_ADI,ICM.KALAN+ICM.SUBE_BAKIYE AS TOP_BAKIYE, ');
SqlString.Append(' ICM.SUBE_BAKIYE,ICM.SATIS_FIYATI,ICM.ALIS_FIYATI,ICM.BEKLEYEN_SIP_MIKTARI,ICM.URETICI_KODU,ICM.URUN_GRUBU,ICM.STOK_KODU AS STOK_KOD ');
SqlString.Append(' ,ICM.KOD_1,ICM.KOD_2,ICM.KOD_3,ICM.KOD_4,ICM.KOD_5 ,AY.* FROM #ICMAL ICM LEFT JOIN ##SATIS AY ON AY.STOK_KODU = ICM.STOK_KODU ) AS TT ');
SqlString.Append(' WHILE (@Sayac>0) BEGIN SET @CL = ''UPDATE ##TUMSTOK SET AY_''+CONVERT(NVARCHAR(3),@Sayac) +'' = 0 WHERE AY_''+CONVERT(NVARCHAR(3),@Sayac) +'' IS NULL'' ');
SqlString.Append(' EXEC(@CL) SELECT @Sayac=@Sayac-1 END SELECT * FROM ##TUMSTOK ORDER BY STOK_ADI ');
SqlString.Append(' DROP TABLE #ICMAL; DROP TABLE #SUBE; DROP TABLE ##SATIS;DROP TABLE ##STOKLAR;DROP TABLE ##TUMSTOK ');
UniDataSource.Enabled := True;
UniQuery.SQL.Text := SqlString.ToString;
UniQuery.Execute;
cxGrid1DBTableView1.EndUpdate;
Şimdi En yukarıdaki
SqlString := TStringBuilder.Create; kodunu unuttum gib bir örnek vereyim şimdi aklıma gelmeyen çokk hata aldığım durum var
burada hatalı benim ondan yana sorun yok da hatamı göremiyorum
Bana verdiği hata ekranı şu
Şimdi ben bilmeyen bir kişi olarakdan bu hatadan
SqlString := TStringBuilder.Create; etmediğimi nasıl anlarım ?
Anlamanın yolu varsa ben bilmiyorsam dediğiniz gibi doğrusunu söylerseniz çok sevinirim
Yorumları: 453
Konuları: 14
Kayıt Tarihi: 07-09-2016
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.1
- Delphi XE7
- Delphi XE2
- Delphi 7
Rep Puanı: 1.833 Programcı
Öncelikle linç edilmeyeceğimi umarak yazıyorum ( ) arkadaşların çoğu şirket sahibi ya da uzun zamandır iş ilanlarına bakmıyor sanırım. Diyeceksinizki o dilin çok kullanılması çok iyi olduğunu mu gösterir, cevabım en azından bir şeyler gösteriyor bence
Ayrıca Delphi'nin Türkiye'de yaygınlığını diğer dünya ülkelerine göre çok sert kaybettiğini düşünüyorum ve burada Bt Grubu'nun da bir miktar payı var bence. Kim olduğunu, ne iş yaptığını, nasıl bir community oluşturduğunu, comminity denen şeye ne tür bir katkı yaptığını bilmediğimiz adamlar nasıl MVP oluyor bu bile buradaki yozlaşmanın/yolunda olmayan bir şeylerin göstergesi diye düşünüyorum.
Umarım hiçbirimiz zorunlu bir şekilde iş aramak zorunda kalmayız ama kalırsak durum bu ne yazık ki
Saygılar,
Hürmetler
Yorumları: 4.224
Konuları: 379
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 16.975 Üstad
(18-04-2019, Saat: 18:05)edo Adlı Kullanıcıdan Alıntı: Öncelikle linç edilmeyeceğimi umarak yazıyorum ( ) arkadaşların çoğu şirket sahibi ya da uzun zamandır iş ilanlarına bakmıyor sanırım. Diyeceksinizki o dilin çok kullanılması çok iyi olduğunu mu gösterir, cevabım en azından bir şeyler gösteriyor bence
Ayrıca Delphi'nin Türkiye'de yaygınlığını diğer dünya ülkelerine göre çok sert kaybettiğini düşünüyorum ve burada Bt Grubu'nun da bir miktar payı var bence. Kim olduğunu, ne iş yaptığını, nasıl bir community oluşturduğunu, comminity denen şeye ne tür bir katkı yaptığını bilmediğimiz adamlar nasıl MVP oluyor bu bile buradaki yozlaşmanın/yolunda olmayan bir şeylerin göstergesi diye düşünüyorum.
Umarım hiçbirimiz zorunlu bir şekilde iş aramak zorunda kalmayız ama kalırsak durum bu ne yazık ki
Saygılar,
Hürmetler
Amaç kimseyi linç etmek değil, ihtiyaçlar doğrultusunda en doğru yolu bulmak. Bunu da burada konuşmayacak isek, bildiğimiz yanlış belkide bizim en doğrumuz olacaktır.
Çok seslilik, ortak doğru yolu gösterecektir.
Allah o listeye muhtaç etmesin. Şahsen %90'ının adını bile ilk defa duydum. Duyduklarım da C# eksenli teknolojik yapılar. Türkiye'de yaşıyorsam yazılım harici bir iş aramak zorunda kalacağım. Yada bir torpil bulup o teknolojiyi bilenlerin başına yönetici olarak geleceğim.
Yabancı ülkelerde (Avrupa ve Uzak Doğuda) durum nasıl bunların da istatistiğine bakmak lazım.
Örneğin, dünya genelinde kabul gören popüler yazılım geliştirme ortam istatistiğini her ay yayınlayan TIOBE'de Delphi 15. sıralardadır.
Bu veya sizin referans olarak vermiş olduğunuz liste bir ölçü mü?
Bu konu daha önce hem bu formda hem de diğer formlarda defalarca konuşuldu sonuç olarak IN/OUT (arz/talep ) parametre sayısı ve türü ön plana çıktı.
Yorumları: 1.572
Konuları: 88
Kayıt Tarihi: 09-08-2016
Rep Puanı: 13.829 Üstad
Başlık fena dağılmış
Devam edilecekse konunun ilgili kısımları "muhabbet"e taşınsın lütfen
There's no place like 127.0.0.1
Yorumları: 656
Konuları: 69
Kayıt Tarihi: 24-01-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 892 Acemi
(25-10-2016, Saat: 09:06)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Embarcadero'nun Delphi Starter Edition sürümünü ücretsiz dağıtması, Delphi/Object Pascal yazılımcılarının yüzünü güldürdü. Tahminimce bu açılımın sebebi Delphi'yi satın alma gücü olmayan veya test etmek isteyen geniş bir kitleye yayılmak ve ilerleyen süreçte Professional, Enterprise ve Architect sürümlerine Upgrade işlemlerine bu kullanıcılara indirim sağlamaktır.
Starter Edition'ın üst sürümlere geçiş için bir basamak olduğunu, aynı zamanda her iki taraf açısından da faydalı olduğunu düşünüyorum. Embarcadero müşteri kazanacak, biz de yeni üründe indirim almış olacağız.
Bu kapsamda olsa gerek; bir çoğunuzun da bildiği ve belki de bir çok projenizde vazgeçilmez Component listesinde yer alan TMS Software'de bir kampanya ile TMS Aurelius component setini ücretsiz olarak dağıtmaya başladı. (Ücretli ve tek yazılım geliştirci lisansı 195 Euro.)
TMS Aurelius nedir?
Kendilerinin tabiri ile ORM framework'tür. Yani Windows 32-Bit, Windows 64-Bit, macOS, iOS ve Android platformlarında çalışabilen bir bileşen kütüphanesidir. Bu set ile kompleks ve karmaşık veri tabanı sorgulamaları yapılabilmektedir.
Desteklediği veri tabanları:
- Firebird
- Interbase
- Microsoft SQL Server
- MySQL
- NexusDB
- Oracle
- SQLite
- PostgreSQL
- DB2
- ElevateDB server
- Absolute Database
Desteklediği veri tabanı yönetim nesneleri:
- dbExpress
- dbGo (ADO)
- FIBPlus
- Interbase Express (IBX)
- SQLite - Native Support
- AnyDac
- NexusDB
- SQL-Direct
- IBObjects
- ElevateDB
- UniDac
- UIB
- Direct Oracle Access
- FireDac
Örnek bir Eğitim videosu:
Eğitim dokümanı: TMS Aurelius
Peki ücretsiz ile ücretli sürümü arasında bir fark var mı?
Yoktur. Tüm özellikleri kullanılabiliyor. Tek fark ücretli versiyonda kaynak kodları da veriliyor.
Ticari amaçla kullanılabilir mi? Evet.
Tek dezavantajı yalnızca Delphi 10.1 Berlin sürümü için kullanılabiliyor. Alt sürümlere destek vermiyor. Ayrıca destek formunda müşteri olarak bir destek alamıyorsunuz. Destek için ücretli ürünlerinden birini almak gerekiyor.
Genel Özellikleri ile Ücretli*Ücretsiz sürüm farkları
Örnek kullanımına bakarak; daha önceden @kimimben üyemizin de benzer bir örnek verdiği, Attribute Bazlı ORM (bu vesile ile kendisine tekrar teşekkür ederim.) ORM yapısının kodlamadaki avantajına bakalım.
Klasik kullanım örneği;
Query1.Sql.Text := 'SELECT I.ID AS INVOICE_ID, I.INVOICE_TYPE, I.INVOICE_NO, I.ISSUE_DATE, I.PRINT_DATE, ' +
'C.ID AS CUSTOMER_ID, C.CUSTOMER_NAME, C.SEX, C.BIRTHDAY, N.ID AS COUNTRY_ID, N.COUNTRY_NAME' +
'FROM INVOICE AS I INNER JOIN CUSTOMER AS C ON (C.ID = I.CUSTOMER_ID) ' +
'LEFT JOIN COUNTRY AS N ON (N.ID = C.COUNTRY_ID)' +
'WHERE I.ID = :INVOICE_ID;'
Query1.ParamByName('INVOICE_ID').AsInteger := 1;
Query1.Open;
ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s',
[Query1.FieldByName('INVOICE_NO').AsInteger,
Query1.FieldByName('CUSTOMER_NAME').AsString,
Query1.FieldByName('COUNTRY_NAME').AsString]));
TMS Aurelius ile aynı örnek;
Invoice := Manager1.Find<TInvoice>(1);
ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s',
[Invoice.InvoiceNo, Invoice.Customer.Name, Invoice.Customer.Country.Name]));
Kayıt ve Ücretsiz İndirmek için: Ücretsiz TMS Aurelius
Hayırlı olsun
Not: 30 Kasım 2016 tarihine kadar ücretsiz indirilebilir.
Bu güzel anlatım ve örnekler için çok teşekkürler Fesih Bey
Yorumları: 52
Konuları: 2
Kayıt Tarihi: 06-11-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 154 Başlangıç
(18-04-2019, Saat: 15:14)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: (18-04-2019, Saat: 14:29)sddk Adlı Kullanıcıdan Alıntı: .Net Core tarafından üretilen çıktılar Java'nın jar/war'ı gibi platform bağımsız çıktılardır, native çıktılar gibi doğrudan işletim sistemi üzerinde çalışmazlar, bir sanal makine (Java için JVM, .Net için .Net Framework veya .Net Core) üzerinde çalışırlar. Dolayısı ile bir Linux kernel'inin .Net Core çıktısını doğrudan çalıştırması (kabullenmesi) zaten beklenmez.
Kısacası native yerine (kim uğraşacak native'le) farklı bir teknikle (ara yazılımla), kendi framework'lerine bağımlı, çalıştıracağı uygulamanın haricinde bellekte önemli ölçüde yer kaplayan, ek bir tercüman (interpreter) ihtiyacı ile normale göre daha yavaş çalışan bir mimariden bahsediyoruz. JVM'yi tenzih ediyorum.
Tenzih ettiğiniz ile yerdiğiniz teknolojilerin mimarileri aynı!
Yorumları: 4.224
Konuları: 379
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 16.975 Üstad
19-04-2019, Saat: 13:25
(Son Düzenleme: 19-04-2019, Saat: 13:45, Düzenleyen: TescilsizUzman.)
(19-04-2019, Saat: 11:30)sddk Adlı Kullanıcıdan Alıntı: (18-04-2019, Saat: 15:14)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Kısacası native yerine (kim uğraşacak native'le) farklı bir teknikle (ara yazılımla), kendi framework'lerine bağımlı, çalıştıracağı uygulamanın haricinde bellekte önemli ölçüde yer kaplayan, ek bir tercüman (interpreter) ihtiyacı ile normale göre daha yavaş çalışan bir mimariden bahsediyoruz. JVM'yi tenzih ediyorum.
Tenzih ettiğiniz ile yerdiğiniz teknolojilerin mimarileri aynı!
Yalnızca yorumlayıcı katmanı için haklısınız. Microsoft'un o katmanda kodu ne şekilde yorumladığı da son derece önemlidir.
JVM mimarisini taklit yeteneğini kullanarak, yeniden icat etmiş ve Core olarak duyurmuş o halde.
Tenzih ettiğim kısım;
JVM, yalnızca pc ve mobil de değil tüm kişisel cihazlarda kendisini ispatlamış son derece güçlü ve stabil JDK kütüphanesi ve JRE geliştirme ortamını kullanır.
Malum dilin hangi framework'ü stabil; Windows'un son sürümünde bile halen her uygulama için farklı bir framework'e ihtiyaç duyuyor.
Yorumları: 1.462
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.878 Üstad
(18-04-2019, Saat: 17:02)FiRewaLL Adlı Kullanıcıdan Alıntı: (18-04-2019, Saat: 13:42)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Bu tarz bir hataya örnek verebilir misiniz ? Ben Delphi'nin 1 versiyonundan beri Delphi ile çalışırım ve bahsettiğiniz gibi bir durumla karşılaştığımı hatırlamıyorum. Bir şeyleri eksik yapıyor olabilirsiniz, izah edebilirseniz neden bahsettiğinizi; yardımcı olmaya ya da sorunu anlayıp yorum yapmaya gayret edelim.
Hocam zaten ben Hata yaptığımı söylüyorum hata şöyle oluyor
Örnek vereyim.
SqlString := TStringBuilder.Create;
SqlString.Append(' DECLARE @BASTARIH DATE = CONVERT(DATE,''' + dtIlkTarih.Text + ''',105) DECLARE @BITTARIH DATE = CONVERT(DATE,''' + dtSonTarih.Text + ''',105) DECLARE @SUBE VARCHAR(MAX) = ''0'' ');
SqlString.Append(' DECLARE @SonAy INT = MONTH(@BITTARIH) DECLARE @Sayac INT = @SonAy DECLARE @CL NVARCHAR(MAX) ');
SqlString.Append(' IF OBJECT_ID(''tempdb..#ICMAL'') IS NOT NULL DROP TABLE #ICMAL; IF OBJECT_ID(''tempdb..#SUBE'') IS NOT NULL DROP TABLE #SUBE; ');
SqlString.Append(' IF OBJECT_ID(''tempdb..##STOKLAR'') IS NOT NULL DROP TABLE ##STOKLAR; ');
SqlString.Append(' CREATE TABLE #ICMAL(STOK_KODU VARCHAR(MAX),STOK_ADI VARCHAR(MAX),SATIS_FIYATI DECIMAL(28,8),ALIS_FIYATI DECIMAL(28,8) ');
SqlString.Append(' ,BIRIM CHAR(5),KOLIICI INT,DEVREDEN DECIMAL(28,8),GIREN DECIMAL(28,8),CIKAN DECIMAL(28,8),KALAN DECIMAL(28,8) ');
SqlString.Append(' ,SUBE_BAKIYE DECIMAL(28,8),SATIS_MIKTARI DECIMAL(28,8),BEKLEYEN_SIP_MIKTARI DECIMAL(28,8), URUN_GRUBU VARCHAR(MAX) ');
SqlString.Append(' ,URETICI_KODU VARCHAR(MAX),KOD_1 VARCHAR(MAX),KOD_2 VARCHAR(MAX),KOD_3 VARCHAR(MAX) , KOD_4 VARCHAR(MAX),KOD_5 VARCHAR(MAX)) ');
SqlString.Append(' INSERT INTO #ICMAL (STOK_KODU,STOK_ADI,URUN_GRUBU,URETICI_KODU,KOD_1,KOD_2,KOD_3,KOD_4,KOD_5) ');
SqlString.Append(' SELECT STOK_KODU,STOK_ADI,(SELECT DBO.TRK_CEVIR(GRUP_ISIM) FROM TBLSTOKKOD2 WITH (NOLOCK) WHERE (GRUP_KOD = STS.KOD_2)) ');
SqlString.Append(' ,URETICI_KODU,KOD_1,KOD_2,KOD_3,KOD_4,KOD_5 FROM dbo.TBLSTSABIT STS WITH (NOLOCK) ' + GelenKisit + ' ');
SqlString.Append(' SELECT SUBE_KODU INTO #SUBE FROM dbo.TBLSUBELER WITH (NOLOCK) WHERE AKTIF =''E'' AND SUBE_KODU NOT IN (''0'',''100'',''101'',''102'',''103'',''104'',''105'',''106'',''107'',''302'',''401'',''402'',''403'',''99'',''32767'',''-1'') ');
SqlString.Append(' UPDATE #ICMAL SET DEVREDEN = ISNULL ((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''G'') ');
SqlString.Append(' AND (STHAR_TARIH < CONVERT (DATE, @BASTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0) ');
SqlString.Append(' UPDATE #ICMAL SET DEVREDEN = DEVREDEN - ISNULL ((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''C'') AND (STHAR_TARIH < CONVERT (DATE, @BASTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0) ');
SqlString.Append(' UPDATE #ICMAL SET GIREN = ISNULL((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''G'') ');
SqlString.Append(' AND (STHAR_TARIH BETWEEN CONVERT (DATE, @BASTARIH, 105) AND CONVERT(DATE, @BITTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0) ');
SqlString.Append(' UPDATE #ICMAL SET CIKAN = ISNULL((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''C'') ');
SqlString.Append(' AND (STHAR_TARIH BETWEEN CONVERT (DATE, @BASTARIH, 105) AND CONVERT (DATE, @BITTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0) ');
SqlString.Append(' UPDATE #ICMAL SET KALAN = ISNULL(DEVREDEN + GIREN - CIKAN,0) UPDATE #ICMAL SET SUBE_BAKIYE = ISNULL((SELECT SUM(STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (STHAR_GCKOD = ''G'') AND ');
SqlString.Append(' (STHAR_TARIH <= @BITTARIH) AND (STOK_KODU = #ICMAL.STOK_KODU) AND (SUBE_KODU IN (SELECT SUBE_KODU FROM #SUBE))), 0) ');
SqlString.Append(' UPDATE #ICMAL SET SUBE_BAKIYE = SUBE_BAKIYE - ISNULL((SELECT SUM(STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (STHAR_GCKOD = ''C'') ');
SqlString.Append(' AND (STHAR_TARIH <= @BITTARIH) AND (STOK_KODU = #ICMAL.STOK_KODU) AND (SUBE_KODU IN (SELECT SUBE_KODU FROM #SUBE))), 0) ');
SqlString.Append(' UPDATE #ICMAL SET BIRIM = (SELECT OLCU_BR1 FROM dbo.TBLSTSABIT WHERE STOK_KODU=#ICMAL.STOK_KODU) UPDATE #ICMAL SET KOLIICI = (SELECT PAYDA_1 FROM dbo.TBLSTSABIT WHERE STOK_KODU=#ICMAL.STOK_KODU) ');
SqlString.Append(' UPDATE #ICMAL SET ALIS_FIYATI = ISNULL((SELECT TOP (1) FIYAT1 FROM TBLSTOKFIAT WITH (NOLOCK) WHERE STOKKODU = #ICMAL.STOK_KODU AND A_S = ''A'' AND (BASTAR<=@BITTARIH) AND ((BITTAR IS NULL) OR (BITTAR >= @BITTARIH)) ORDER BY BASTAR DESC),0) ');
SqlString.Append(' UPDATE #ICMAL SET SATIS_FIYATI = ISNULL((SELECT TOP (1) FIYAT1 FROM TBLSTOKFIAT WITH (NOLOCK) WHERE STOKKODU = #ICMAL.STOK_KODU AND A_S = ''S'' AND (BASTAR<=@BITTARIH) AND ((BITTAR IS NULL) OR (BITTAR >= @BITTARIH)) ORDER BY BASTAR DESC),0) ');
SqlString.Append(' UPDATE #ICMAL SET BEKLEYEN_SIP_MIKTARI = ISNULL((SELECT KALAN_MIK FROM [dbo].[FN_BEKLEYEN_SIP] (#ICMAL.STOK_KODU ,@SUBE)),0) ');
SqlString.Append(' SELECT STOK_KODU,SUM(STHAR_GCMIK) AS MIKTAR ,MONTH(STHAR_TARIH) AS AY INTO ##STOKLAR FROM TBLSTHAR WITH (NOLOCK) WHERE STHAR_GCKOD =''C'' AND STHAR_HTUR IN(''J'',''K'') AND STHAR_TARIH ');
SqlString.Append(' <= @BITTARIH AND SUBE_KODU BETWEEN 0 AND 800 GROUP BY STOK_KODU,MONTH(STHAR_TARIH) ');
SqlString.Append(' DECLARE @cols AS NVARCHAR(MAX) ,@query AS NVARCHAR(MAX);SELECT @cols = STUFF ((SELECT '','' + QUOTENAME (col + ''AY_'' + CAST(t.AY AS VARCHAR(20))) FROM ##STOKLAR t ');
SqlString.Append(' CROSS APPLY (SELECT '''',MIKTAR) c(col, so) GROUP BY col,T.AY ORDER BY AY FOR XML PATH (''''), TYPE).value (''.'', ''NVARCHAR(MAX)''),1,1,'''' ); ');
SqlString.Append(' SET @query = ''SELECT STOK_KODU,'' + @cols + '' INTO ##SATIS from (SELECT STOK_KODU, col = col + ''''AY_'''' + cast(AY as varchar(4)), value from ##STOKLAR t ');
SqlString.Append(' cross apply(select '''''''', MIKTAR) c (col, value) ) x pivot (sum(value) for col in (''+ @cols + '') ) p ''; EXECUTE sp_executesql @query; ');
SqlString.Append(' SELECT * INTO ##TUMSTOK FROM (SELECT ICM.STOK_ADI AS ADI,ICM.DEVREDEN,ICM.GIREN,ICM.CIKAN,ICM.KALAN,ICM.BIRIM,ICM.KOLIICI,ICM.STOK_ADI,ICM.KALAN+ICM.SUBE_BAKIYE AS TOP_BAKIYE, ');
SqlString.Append(' ICM.SUBE_BAKIYE,ICM.SATIS_FIYATI,ICM.ALIS_FIYATI,ICM.BEKLEYEN_SIP_MIKTARI,ICM.URETICI_KODU,ICM.URUN_GRUBU,ICM.STOK_KODU AS STOK_KOD ');
SqlString.Append(' ,ICM.KOD_1,ICM.KOD_2,ICM.KOD_3,ICM.KOD_4,ICM.KOD_5 ,AY.* FROM #ICMAL ICM LEFT JOIN ##SATIS AY ON AY.STOK_KODU = ICM.STOK_KODU ) AS TT ');
SqlString.Append(' WHILE (@Sayac>0) BEGIN SET @CL = ''UPDATE ##TUMSTOK SET AY_''+CONVERT(NVARCHAR(3),@Sayac) +'' = 0 WHERE AY_''+CONVERT(NVARCHAR(3),@Sayac) +'' IS NULL'' ');
SqlString.Append(' EXEC(@CL) SELECT @Sayac=@Sayac-1 END SELECT * FROM ##TUMSTOK ORDER BY STOK_ADI ');
SqlString.Append(' DROP TABLE #ICMAL; DROP TABLE #SUBE; DROP TABLE ##SATIS;DROP TABLE ##STOKLAR;DROP TABLE ##TUMSTOK ');
UniDataSource.Enabled := True;
UniQuery.SQL.Text := SqlString.ToString;
UniQuery.Execute;
cxGrid1DBTableView1.EndUpdate;
Şimdi En yukarıdaki
SqlString := TStringBuilder.Create; kodunu unuttum gib bir örnek vereyim şimdi aklıma gelmeyen çokk hata aldığım durum var
burada hatalı benim ondan yana sorun yok da hatamı göremiyorum
Bana verdiği hata ekranı şu
Şimdi ben bilmeyen bir kişi olarakdan bu hatadan
SqlString := TStringBuilder.Create; etmediğimi nasıl anlarım ?
Anlamanın yolu varsa ben bilmiyorsam dediğiniz gibi doğrusunu söylerseniz çok sevinirim
Sevgili kardeşim; uygulamayı bir debugger ile çalıştırırsanız (Bizim için Delphi IDE en güzeli) bu durumda çıkan hata mesajında Break demenize müteakip hatanın oluştuğu yere düşersiniz. Ardından Call Stack'a bakar iseniz, kodun seceresini gözlemler ve böceğinizi bulursunuz. Sonrası size ait. Elbette çalışma zamanında size hata ile ilgili çok anlamlı bir mesaj çıkartılamayacaktır. (Her ne kadar AV hatasında elde edilen adresin'de bir anlamı varsa da). Runtime sırasında da detaylı hata analizleri , kod satırının tespiti vb şeyleri istiyor iseniz bu durumda uygulamanızın ayarlarında Map Info'yu detailed yapmalısınız ya da daha da iyisi EurekaLog, madExcept ya da ona benzer ürünleri kullanmalısınız. Ben psikopatım kendi call stack'ımı kendim oluştururum derseniz sizi zorlu bir yol bekliyor demektir. Ama yine de psikopat adayları için StackWalk API'sine bakmalarını önerebilirim.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 176
Konuları: 0
Kayıt Tarihi: 01-09-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 552 Acemi
(19-04-2019, Saat: 13:46)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Sevgili kardeşim; uygulamayı bir debugger ile çalıştırırsanız (Bizim için Delphi IDE en güzeli) bu durumda çıkan hata mesajında Break demenize müteakip hatanın oluştuğu yere düşersiniz. Ardından Call Stack'a bakar iseniz, kodun seceresini gözlemler ve böceğinizi bulursunuz. Sonrası size ait. Elbette çalışma zamanında size hata ile ilgili çok anlamlı bir mesaj çıkartılamayacaktır. (Her ne kadar AV hatasında elde edilen adresin'de bir anlamı varsa da). Runtime sırasında da detaylı hata analizleri , kod satırının tespiti vb şeyleri istiyor iseniz bu durumda uygulamanızın ayarlarında Map Info'yu detailed yapmalısınız ya da daha da iyisi EurekaLog, madExcept ya da ona benzer ürünleri kullanmalısınız. Ben psikopatım kendi call stack'ımı kendim oluştururum derseniz sizi zorlu bir yol bekliyor demektir. Ama yine de psikopat adayları için StackWalk API'sine bakmalarını önerebilirim.
Hocam uygulamayı bir debugger ile çalıştırırsanız (Bizim için Delphi IDE en güzeli)
Debug Mode de çalıştırdığımda break dediğimiz zaman hataya değil hatanın hatasının hatasının olduğu detaylara düşüyor oradan da hiç birşey anlamıyorsun
Teşekkür ederim ilgin için.
|