Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
SQL Sorguda Türkçe Sorunu
#11
(08-09-2020, Saat: 11:17)bydelphi Adlı Kullanıcıdan Alıntı:
(08-09-2020, Saat: 10:56)OZCANK Adlı Kullanıcıdan Alıntı: Delphi de şu şekilde mi? Kullanacam;

Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4 FROM TBLSTSABIT WHERE 1=1');
if Edit1.Text<>'' then
  Form26.StokSabit.SQL.Add('And Stok_Kodu='+ QuotedStr(Edit1.Text));
if DBComboBox1.Text<>'' then
  Form26.StokSabit.SQL.Add('And EXECUTE PROCEDURE ''SP_RAPOR1'' ''@GRUP_KODU =''+ QuotedStr(DBComboBox1.Text));
if DBComboBox2.Text<>'' then
  Form26.StokSabit.SQL.Add('And Kod_1='+ QuotedStr(DBComboBox2.Text));
if DBComboBox3.Text<>'' then





Form26.StokSabit.Close;

Form26.StokSabit.SQL.text := 
' EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'  ,  @STOK_KODU = '+ QuotedStr(DBComboBox2.Text);

Form26.StokSabit.open;



bu kadar.
kalanını proc zaten hallediyor.

incorrect syntax near the keyword 'and' process stop hatası veriyor.


if Edit1.Text<>'' then
   Form26.StokSabit.SQL.Text:='And Stok_Kodu='+ QuotedStr(Edit1.Text)+'';
if DBComboBox1.Text<>'' then
//   Form26.StokSabit.SQL.Add('And EXEC SP_RAPOR1 @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text));
  Form26.StokSabit.SQL.Text:='And EXEC SP_RAPOR1  @GRUP_KODU = '+QuotedStr(DBComboBox1.Text)+'';
  if DBComboBox2.Text<>'' then
  Form26.StokSabit.SQL.Text:='And Kod_1='+ QuotedStr(DBComboBox2.Text)+'';
if DBComboBox3.Text<>'' then
  Form26.StokSabit.SQL.Text:='And Kod_2='+ QuotedStr(DBComboBox3.Text)+'';
Cevapla
#12
(08-09-2020, Saat: 12:16)OZCANK Adlı Kullanıcıdan Alıntı:
(08-09-2020, Saat: 11:17)bydelphi Adlı Kullanıcıdan Alıntı:

Form26.StokSabit.Close;

Form26.StokSabit.SQL.text := 
' EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'  ,  @STOK_KODU = '+ QuotedStr(DBComboBox2.Text);

Form26.StokSabit.open;



bu kadar.
kalanını proc zaten hallediyor.

incorrect syntax near the keyword 'and' process stop hatası veriyor.


if Edit1.Text<>'' then
   Form26.StokSabit.SQL.Text:='And Stok_Kodu='+ QuotedStr(Edit1.Text)+'';
if DBComboBox1.Text<>'' then
//   Form26.StokSabit.SQL.Add('And EXEC SP_RAPOR1 @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text));
  Form26.StokSabit.SQL.Text:='And EXEC SP_RAPOR1  @GRUP_KODU = '+QuotedStr(DBComboBox1.Text)+'';
  if DBComboBox2.Text<>'' then
  Form26.StokSabit.SQL.Text:='And Kod_1='+ QuotedStr(DBComboBox2.Text)+'';
if DBComboBox3.Text<>'' then
  Form26.StokSabit.SQL.Text:='And Kod_2='+ QuotedStr(DBComboBox3.Text)+'';


Sadece bunu yazmanız yeterlidir.

Form26.StokSabit.Close;

Form26.StokSabit.SQL.text := 
' EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'  ,  @STOK_KODU = '+ QuotedStr(DBComboBox2.Text);

Form26.StokSabit.open;
Sorsaydı bilirdi, sormuyor ki bilsin. Bilseydi sorardı bilmiyor ki sorsun.
Cevapla
#13
(08-09-2020, Saat: 11:17)bydelphi Adlı Kullanıcıdan Alıntı:
(08-09-2020, Saat: 10:56)OZCANK Adlı Kullanıcıdan Alıntı: Delphi de şu şekilde mi? Kullanacam;

Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4 FROM TBLSTSABIT WHERE 1=1');
if Edit1.Text<>'' then
  Form26.StokSabit.SQL.Add('And Stok_Kodu='+ QuotedStr(Edit1.Text));
if DBComboBox1.Text<>'' then
  Form26.StokSabit.SQL.Add('And EXECUTE PROCEDURE ''SP_RAPOR1'' ''@GRUP_KODU =''+ QuotedStr(DBComboBox1.Text));
if DBComboBox2.Text<>'' then
  Form26.StokSabit.SQL.Add('And Kod_1='+ QuotedStr(DBComboBox2.Text));
if DBComboBox3.Text<>'' then





Form26.StokSabit.Close;

Form26.StokSabit.SQL.text := 
' EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'  ,  @STOK_KODU = '+ QuotedStr(DBComboBox2.Text);

Form26.StokSabit.open;



bu kadar.
kalanını proc zaten hallediyor.

Kardeşim bu şekilde kullanıyorum ama şöyle bir şey var eğer GRUP_KOD ve KOD_2 aynı anda seçilebilir bu durum da hata veriyor. Onu nasıl düzenleyebilirim?

Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
if Edit1.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @STOK_KODU = '+ QuotedStr(Edit1.Text)+'';
if DBComboBox1.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'';
if DBComboBox2.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_1 = '+ QuotedStr(DBComboBox2.Text)+'';
if DBComboBox3.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_2 = '+ QuotedStr(DBComboBox3.Text)+'';
if DBComboBox4.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_3 = '+ QuotedStr(DBComboBox4.Text)+'';
if DBComboBox5.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_4 = '+ QuotedStr(DBComboBox5.Text)+'';
if DBComboBox6.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_5 = '+ QuotedStr(DBComboBox6.Text)+'';
Cevapla
#14
(08-09-2020, Saat: 13:28)OZCANK Adlı Kullanıcıdan Alıntı:
(08-09-2020, Saat: 11:17)bydelphi Adlı Kullanıcıdan Alıntı:

Form26.StokSabit.Close;

Form26.StokSabit.SQL.text := 
' EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'  ,  @STOK_KODU = '+ QuotedStr(DBComboBox2.Text);

Form26.StokSabit.open;



bu kadar.
kalanını proc zaten hallediyor.

Kardeşim bu şekilde kullanıyorum ama şöyle bir şey var eğer GRUP_KOD ve KOD_2 aynı anda seçilebilir bu durum da hata veriyor. Onu nasıl düzenleyebilirim?

Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
if Edit1.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @STOK_KODU = '+ QuotedStr(Edit1.Text)+'';
if DBComboBox1.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'';
if DBComboBox2.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_1 = '+ QuotedStr(DBComboBox2.Text)+'';
if DBComboBox3.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_2 = '+ QuotedStr(DBComboBox3.Text)+'';
if DBComboBox4.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_3 = '+ QuotedStr(DBComboBox4.Text)+'';
if DBComboBox5.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_4 = '+ QuotedStr(DBComboBox5.Text)+'';
if DBComboBox6.Text<>'' then
  Form26.StokSabit.SQL.Text:='EXEC SP_RAPOR1  @KOD_5 = '+ QuotedStr(DBComboBox6.Text)+'';



 
    Sql server tarafında prosedüründe gerekli olan yeni parametrelerini açıp management studioda test ettin mi prosedür çalışıyormu.
    yani şöyle bir kullanım yapabiliyormusun 
    
EXEC SP_RAPOR1 @KOD_1 = 'ali' , @KOD_2 = 'can' , @KOD_3 = 'veli' , @KOD_4 = 'ayşe' , @KOD_5 = 'osman'  , .............n

    delphi tarafında bütün parametreleri eksiksiz doldur.  boş olanı boş, dolu olanı dolu gönder. delphi tarafında if ile ayırt etme hepsini bas. 
    çünki üstte yazdığım prosedürün içerisinde bu ayrışıyor kendi kontrol ediyor bu metotda.
    bu sqlin nasıl çalıştığını anlamak için bu makaleyi okuyabilirsin 
    https://yazilimtoplulugu.com/d/585-sql-s...esenleri-1
    Benim yazdığım metot bu, bu işlem senin yaptığın gibi datastine direk select yazarak da yapılabilirdi.
Sorsaydı bilirdi, sormuyor ki bilsin. Bilseydi sorardı bilmiyor ki sorsun.
Cevapla
#15
(08-09-2020, Saat: 12:19)bydelphi Adlı Kullanıcıdan Alıntı:
(08-09-2020, Saat: 12:16)OZCANK Adlı Kullanıcıdan Alıntı: incorrect syntax near the keyword 'and' process stop hatası veriyor.


if Edit1.Text<>'' then
   Form26.StokSabit.SQL.Text:='And Stok_Kodu='+ QuotedStr(Edit1.Text)+'';
if DBComboBox1.Text<>'' then
//   Form26.StokSabit.SQL.Add('And EXEC SP_RAPOR1 @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text));
  Form26.StokSabit.SQL.Text:='And EXEC SP_RAPOR1  @GRUP_KODU = '+QuotedStr(DBComboBox1.Text)+'';
  if DBComboBox2.Text<>'' then
  Form26.StokSabit.SQL.Text:='And Kod_1='+ QuotedStr(DBComboBox2.Text)+'';
if DBComboBox3.Text<>'' then
  Form26.StokSabit.SQL.Text:='And Kod_2='+ QuotedStr(DBComboBox3.Text)+'';


SADECE BUNU YAZIN BAŞKA BİŞEY EKLEMEYİN

Form26.StokSabit.Close;

Form26.StokSabit.SQL.text := 
' EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'  ,  @STOK_KODU = '+ QuotedStr(DBComboBox2.Text);

Form26.StokSabit.open;

Forum kuralları 6. ve 8. maddede belirtilen kurallara uygun şekilde mesaj içeriğinizi yeniden düzenleyin lütfen.
Delphi Can'dır!
WWW
Cevapla
#16
(08-09-2020, Saat: 14:38)DelphiCan Adlı Kullanıcıdan Alıntı:
(08-09-2020, Saat: 12:19)bydelphi Adlı Kullanıcıdan Alıntı: SADECE BUNU YAZIN BAŞKA BİŞEY EKLEMEYİN

Form26.StokSabit.Close;

Form26.StokSabit.SQL.text := 
' EXEC SP_RAPOR1  @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+'  ,  @STOK_KODU = '+ QuotedStr(DBComboBox2.Text);

Form26.StokSabit.open;

Forum kuralları 6. ve 8. maddede belirtilen kurallara uygun şekilde mesaj içeriğinizi yeniden düzenleyin lütfen.


Sanırım büyük harfle yazdığım mesajı düzelttiniz yada ben bulamıyorum.
Yardımcı olursanız o mesajımı girip düzelteyim olur mu şu an düzeltemiyorum.
Sorsaydı bilirdi, sormuyor ki bilsin. Bilseydi sorardı bilmiyor ki sorsun.
Cevapla
#17
(08-09-2020, Saat: 15:24)bydelphi Adlı Kullanıcıdan Alıntı:
(08-09-2020, Saat: 14:38)DelphiCan Adlı Kullanıcıdan Alıntı: Forum kuralları 6. ve 8. maddede belirtilen kurallara uygun şekilde mesaj içeriğinizi yeniden düzenleyin lütfen.


Sanırım büyük harfle yazdığım mesajı düzelttiniz yada ben bulamıyorum.
Yardımcı olursanız o mesajımı girip düzelteyim olur mu şu an düzeltemiyorum.
Düzeltmeyi ben yaptım hocam sorun yok. 
İyi çalışmalar dilerim.
Yazılım Topluluğumuz -> Tıklayın
Kişisel Tanıtım Sitem -> Tıklayın
20 y/o, sadece öğrenmeye odaklanmış, insancık..
WWW
Cevapla
#18
Merhaba; Ben bu şekilde Proc geliştirdim ama sanırım DEPO_KODU ve SUBE_KODU nda hata veriyor rica etsem kontrol edebilir misiniz? Nerede hata yapıyorum.

ALTER PROC [dbo].[SP_EMANETTRK] 
               ( @STOK_KODU varchar(30) = null ,
    @GRUP_KODU varchar(30) = null , 
@KOD_1 varchar(8) = null ,
                @KOD_2 varchar(8) = null ,
@KOD_3 varchar(8) = null , 
@KOD_4 varchar(8) = null , 
@KOD_5 varchar(8) = null ,
@DEPO_KODU smallint = null,
@SUBE_KODU varchar(10) = null
)
AS
BEGIN
SET @STOK_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@STOK_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @GRUP_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@GRUP_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_1 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_1,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_2 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_2,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_3 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_3,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_4 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_4,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_5 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_5,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @DEPO_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@DEPO_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @SUBE_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@SUBE_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SELECT DISTINCT 
              STOK_KODU,
  STOK_ADI,
  GRUP_KODU GKOD,
  SATIS_FIAT1,
  SATIS_FIAT2,
  SATIS_FIAT3,
  SATIS_FIAT4,
  ALIS_FIAT1,
  ALIS_FIAT2,
  ALIS_FIAT3,
  ALIS_FIAT4,
  KOD_1,
  KOD_2,
  KOD_3,
  KOD_4,
  KOD_5,
  DEPO_KODU,
  SUBE_KODU
FROM TBLSTSABIT 
WHERE STOK_KODU LIKE '%'+COALESCE( NULLIF( @STOK_KODU , '') , STOK_KODU ) +'%' AND  
     GRUP_KODU LIKE '%'+COALESCE( NULLIF( @GRUP_KODU , '') , GRUP_KODU ) +'%' AND
 KOD_1 LIKE '%'+COALESCE( NULLIF( @KOD_1 , '') , KOD_1 ) +'%' AND
     KOD_2 LIKE '%'+COALESCE( NULLIF( @KOD_2 , '') , KOD_2 ) +'%' AND
     KOD_3 LIKE '%'+COALESCE( NULLIF( @KOD_3 , '') , KOD_3 ) +'%' AND
     KOD_4 LIKE '%'+COALESCE( NULLIF( @KOD_4 , '') , KOD_4 ) +'%' AND
     KOD_5 LIKE '%'+COALESCE( NULLIF( @KOD_5 , '') , KOD_5 ) +'%' AND
 DEPO_KODU LIKE '%'+COALESCE( NULLIF( @DEPO_KODU , '') , DEPO_KODU ) + '%' AND
     SUBE_KODU LIKE '%'+COALESCE( NULLIF( @SUBE_KODU , '') , SUBE_KODU ) + '%'  
END

GO


Hata 25 satırda o satır da 
SET @STOK_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@STOK_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')

exec SP_EMANETTRK @GRUP_KODU ='TİBET'

Msg 245, Level 16, State 1, Procedure SP_EMANETTRK, Line 25

Conversion failed when converting the varchar value '%' to data type smallint.
Cevapla
#19
Bu şekilde düzenleme yaptım ama rapor boş geliyor. Başka nasıl bir şekilde raporlayabilirim ?

if Edit1.Text<>'' then
Form26.StokSabit.SQL.Text:='EXEC SP_EMANETTRK @STOK_KODU='+QuotedStr(Edit1.Text)+'';
if DBComboBox1.Text<>'' then
Form26.StokSabit.SQL.Add('EXEC SP_EMANETTRK @GRUP_KODU ='+QuotedStr(DBComboBox1.Text)+'');
if DBComboBox2.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_1 ='+QuotedStr(DBComboBox2.Text)+'';
if DBComboBox3.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_2 ='+QuotedStr(DBComboBox3.Text)+'';
if DBComboBox4.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_3 ='+QuotedStr(DBComboBox4.Text)+'';
if DBComboBox5.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_4 ='+QuotedStr(DBComboBox5.Text)+'';
if DBComboBox6.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_5 ='+QuotedStr(DBComboBox6.Text)+'';
if DBComboBox7.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @DEPO_KODU ='+QuotedStr(DBComboBox7.Text)+'';
if Edit9.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @SUBE_KODU ='+ QuotedStr(Edit9.Text)+'';
Form26.StokSabit.Open;

Bu şekilde de rapor boş neden gelir anlamadım bakabilir misiniz?

exec SP_EMANETTRK @GRUP_KODU='TİBET' , @KOD_1 = '' , @KOD_2 = '' , @KOD_3 ='' , @KOD_4 = '' , @KOD_5 = '0' , @DEPO_KODU = '0' , @SUBE_KODU = '0'
Cevapla
#20
Prosedürün tam kodunu atarsanız bi inceleyelim
Sorsaydı bilirdi, sormuyor ki bilsin. Bilseydi sorardı bilmiyor ki sorsun.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Master detail bağlantı da indexfieldname de alan bulamama sorunu Gumiho309 4 153 Dün, Saat: 18:41
Son Yorum: Gumiho309
  Vcl.ActnCtrls Sorunu MuhammedYasir 7 551 12-08-2020, Saat: 11:29
Son Yorum: MuhammedYasir
  Port kapatma sorunu. seci20 0 168 10-08-2020, Saat: 15:28
Son Yorum: seci20
  Locate ve Lookup TR Karakter sorunu narkotik 3 1.723 15-06-2020, Saat: 16:49
Son Yorum: samsaros@gmail.com
  Delphi 10.3 Rest Debugger sorunu varyemez 4 780 31-05-2020, Saat: 01:36
Son Yorum: varyemez



Konuyu Okuyanlar: 2 Ziyaretçi