conversion error from string

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

conversion error from string

Mesaj gönderen ALUCARD »

Bu konuyla ilgili forumda aramalar yaptım.
Firebird 2.5 ve DelphiXE7 kullanıyorum.

iki tane tablom var.
  • TBL_DEMIRBAS
  • tbl_kullanicilar
kullanıcılar tablosunda yetkili olduğu kurumid lerinin olduğu yetkilikurumlar diye bir alan var. bu alanın içerisinde ise 1,2,3,6,7 değerleri var. aşağıdaki sqli çalışrıtdığımda

Kod: Tümünü seç

select t.* from TBL_DEMIRBAS  t
where  t.kurumid in (select k.yetkilikurumlar from tbl_kullanicilar k where k.KULID = :KULID )
conversion error from string "1,2,3,6,7".

hatası alıyorum.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
boreas
Üye
Mesajlar: 120
Kayıt: 05 Tem 2007 12:39
Konum: Ankara

Re: conversion error from string

Mesaj gönderen boreas »

t.kurumid bir sayı ve in ile bağladığında sayıların arasında arama yapması gerekir ama sql "1,2,3,6,7" bu şekilde bir katarı ayrı ayrı sayılara ayıramaz bu tek parça bir stringdir. Sen kurumid bilgisini like komutuyla yetkili kurumlarda arat. Ama bu kez kurumid.nin başına sonura virgul koy ki 7 ile 17'yi karıştırmasın.
Yani
where ','||t.kurumid||',' like (select (','||k.yetkilikurumlar) as yetkili from tbl_kullanicilar k where k.KULID = :KULID )

gibi
....
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Re: conversion error from string

Mesaj gönderen ALUCARD »

Hocam bu dediğinizde olmuyor
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
boreas
Üye
Mesajlar: 120
Kayıt: 05 Tem 2007 12:39
Konum: Ankara

Re: conversion error from string

Mesaj gönderen boreas »

şunu denermisin
where (select (','||k.yetkilikurumlar) as yetkili from tbl_kullanicilar k where k.KULID = :KULID ) like '%,'||t.kurumid||',%'
....
boreas
Üye
Mesajlar: 120
Kayıt: 05 Tem 2007 12:39
Konum: Ankara

Re: conversion error from string

Mesaj gönderen boreas »

select t.* from TBL_DEMIRBAS t
right join tbl_kullanicilar k on (k.yetkilikurumlar like '%,'||t.kurumid||',%' )
bu daha da doğru geliyor bana
....
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Re: conversion error from string

Mesaj gönderen ALUCARD »

yok hocam sıfır kayıt geliyor
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: conversion error from string

Mesaj gönderen greenegitim »

Her iki tabloda da örnek alanlar ve örnek kayıtlar yazabilirmisiniz.
Mücadele güzelleştirir!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Re: conversion error from string

Mesaj gönderen ALUCARD »

Kod: Tümünü seç

CREATE TABLE TBL_KULLANICILAR (
    KULID            INTEGER NOT NULL,
    KULLANICIADI     VARCHAR(20) NOT NULL,
    SIFRE            VARCHAR(20) NOT NULL,
    ADI              VARCHAR(25) NOT NULL,
    SOYADI           VARCHAR(25) NOT NULL,
    TCKIMLIK         VARCHAR(11) NOT NULL,
    YETKILIKURUMLAR  VARCHAR(150) NOT NULL,
    RESIM            VARCHAR(250)
);

Kod: Tümünü seç

INSERT INTO TBL_KULLANICILAR (KULID, KULLANICIADI, SIFRE, ADI, SOYADI, TCKIMLIK, YETKILIKURUMLAR, RESIM) VALUES (1, '1', '1', 'ERKAN', 'ÇAĞLAR', '67339083784', '1,2,3,6,7', 'Background-Graphics-Medical-I-72249538.jpg');
INSERT INTO TBL_KULLANICILAR (KULID, KULLANICIADI, SIFRE, ADI, SOYADI, TCKIMLIK, YETKILIKURUMLAR, RESIM) VALUES (2, '2', '2', 'CANER ALİ', 'ARSLAN', '2', '''1'','2', NULL);

COMMIT WORK;

Kod: Tümünü seç

CREATE TABLE TBL_DEMIRBAS (
    DEMIRBASID      INTEGER NOT NULL,
    KURUMID         INTEGER,
    SERVISID        INTEGER,
    SERVISADI       VARCHAR(50),
    KARYOLA         INTEGER,
    SEDYE           INTEGER,
    TEKERLEKSANDAL  INTEGER,
    FLOWMETRE       INTEGER,
    MANOMETRE       INTEGER,
    TANSIYONALETI   INTEGER,
    ATESOLCER       INTEGER,
    OKSREGULATOR    INTEGER,
    KANTASIMA       INTEGER,
    PARMAKTIPI      INTEGER,
    LARINGESKOP     INTEGER,
    HAVALIYATAK     INTEGER
);

Kod: Tümünü seç

INSERT INTO TBL_DEMIRBAS (DEMIRBASID, KURUMID, SERVISID, SERVISADI, KARYOLA, SEDYE, TEKERLEKSANDAL, FLOWMETRE, MANOMETRE, TANSIYONALETI, ATESOLCER, OKSREGULATOR, KANTASIMA, PARMAKTIPI, LARINGESKOP, HAVALIYATAK) VALUES (14, 3, 10, 'YOĞUN BAKIM', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO TBL_DEMIRBAS (DEMIRBASID, KURUMID, SERVISID, SERVISADI, KARYOLA, SEDYE, TEKERLEKSANDAL, FLOWMETRE, MANOMETRE, TANSIYONALETI, ATESOLCER, OKSREGULATOR, KANTASIMA, PARMAKTIPI, LARINGESKOP, HAVALIYATAK) VALUES (15, 1, 4, 'HARİCİYE', 2, 5, 2, 152, 1, 4, 2, 1, 2, 2, 1, 2);
INSERT INTO TBL_DEMIRBAS (DEMIRBASID, KURUMID, SERVISID, SERVISADI, KARYOLA, SEDYE, TEKERLEKSANDAL, FLOWMETRE, MANOMETRE, TANSIYONALETI, ATESOLCER, OKSREGULATOR, KANTASIMA, PARMAKTIPI, LARINGESKOP, HAVALIYATAK) VALUES (4, 1, 1, 'ACİL SERVİS', 2, 1, 2, 15, 1, 2, 1, 2, 15, 1, 2, 5);
INSERT INTO TBL_DEMIRBAS (DEMIRBASID, KURUMID, SERVISID, SERVISADI, KARYOLA, SEDYE, TEKERLEKSANDAL, FLOWMETRE, MANOMETRE, TANSIYONALETI, ATESOLCER, OKSREGULATOR, KANTASIMA, PARMAKTIPI, LARINGESKOP, HAVALIYATAK) VALUES (7, 1, 2, 'KBB', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
INSERT INTO TBL_DEMIRBAS (DEMIRBASID, KURUMID, SERVISID, SERVISADI, KARYOLA, SEDYE, TEKERLEKSANDAL, FLOWMETRE, MANOMETRE, TANSIYONALETI, ATESOLCER, OKSREGULATOR, KANTASIMA, PARMAKTIPI, LARINGESKOP, HAVALIYATAK) VALUES (8, 1, 3, 'DAHİLİYE', 1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 21, 12);
INSERT INTO TBL_DEMIRBAS (DEMIRBASID, KURUMID, SERVISID, SERVISADI, KARYOLA, SEDYE, TEKERLEKSANDAL, FLOWMETRE, MANOMETRE, TANSIYONALETI, ATESOLCER, OKSREGULATOR, KANTASIMA, PARMAKTIPI, LARINGESKOP, HAVALIYATAK) VALUES (11, 1, 3, 'DAHİLİYE', 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
INSERT INTO TBL_DEMIRBAS (DEMIRBASID, KURUMID, SERVISID, SERVISADI, KARYOLA, SEDYE, TEKERLEKSANDAL, FLOWMETRE, MANOMETRE, TANSIYONALETI, ATESOLCER, OKSREGULATOR, KANTASIMA, PARMAKTIPI, LARINGESKOP, HAVALIYATAK) VALUES (12, 2, 6, 'KULAK BURUN BOĞAZ', 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
INSERT INTO TBL_DEMIRBAS (DEMIRBASID, KURUMID, SERVISID, SERVISADI, KARYOLA, SEDYE, TEKERLEKSANDAL, FLOWMETRE, MANOMETRE, TANSIYONALETI, ATESOLCER, OKSREGULATOR, KANTASIMA, PARMAKTIPI, LARINGESKOP, HAVALIYATAK) VALUES (13, 1, 1, 'ACİL SERVİS', 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3);

COMMIT WORK;
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: conversion error from string

Mesaj gönderen freeman35 »

Kod: Tümünü seç

S:= "1,2,3,6,7";
t.kurumid in S
Bu şekilde sql içinde kullamamazsın.
Yeni tasarlıyorsan, tbl_kullanicilar.KULID bunların her birini row olarak kaydet, sql yazarkende in değil JOIN ile bağla, bu sana hem hız sağlar, hemde kotrol yazmana gerek kalmaz. yani join ile eşleşmeyen kayıtlar zaten gelmez.
Diğer bir yöntem de, udf yazabilirsin, yada bir function. function larla FB2.5 ta hiç uğraşmadım, ama FB 3.x de kullanmaya başladım oldukça rahat oluyor. Ama bazen join çok daha hızlı çalışıyor. nihayi kararı vermeden test yapmakta fayda var.
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: conversion error from string

Mesaj gönderen SimaWB »

MySQL'de bu şekilde kullanılabiliyor ama Firebird'de sorun oluyor demekki.
There's no place like 127.0.0.1
Cevapla