Ramarslan

REST Query

  Tiger/REST

Merhaba,


Yaptığım projede ITEMS tablosundan önce ürünün LOGICALREF'ini öğrenmem gerekiyor. Bunun için elimdeki tek bilgi olan malzeme kodunu kullanmak istiyorum. Bu anlamda GET metodunu çağırırken aşağıdaki query'yi kullanıyorum: 

http://XXX.YYY.ZZZ.1:32001/api/v1/queries?tsql=select LOGICALREF from LG_001_ITEMS where CODE='9789750723322'


Sorun şu ki, eğer aradığım malzeme koduna sahip bir malzeme yok ise her defasında farklı olacak şekilde kafasına göre sonuçlar veriyor. İlginç olan verdiği sonuçların kendini tekrarlaması. Mesela ilk 4 hata (düğmeye her bastığımda aldığım hata) 43658212, 43658372, 43658516, 43658260 iken daha sonra sırayla 43658212, 43658372, 43658516 sonuçlarını veriyor.


Bu sorunu aşmak için SQL Server null fonksiyonlarını (ISNULL, COALESCE gibi) denesem de bir sonuç alamadım. 


Not: Bağlantı sorunum yok, accessToken alabiliyorum. Bu yöntemle en yüksek LOGICALREF değeri olan 70'i getirebildim, yani sağlıklı sonuçlar da alabildim. 


Lütfen yardım ediniz.


REST Service


ramazanonur

Merhaba,


Evet böyle bir teknik sorun var. Logoya iletmiştim konuyu.


Logonun verdiği cevap;

Yazdığınız sorguda LObject üzerinden işlem yapılmaya çalışılıyor.  Bu  hata LObjectin hatası, dolayısıyla Rest tarafında da hata alıyorsunuz.


Kısaca, sorgu yapıldığında eğer sorgu sonucu boş olsa bile rest 1 tane saçma satır döndürüyor.


12/10/17 11:45


ramazanonur

Benim çözüm yöntemim;


Sorgudan dönen tüm fieldlar alakasız sonuçlar döndüğü için sorgu içerisine değerini bildiğim bir field ekliyorum. Kayıt döndükten sonra bu veriyi kontrol ediyorum.


select 1 AS KONTROL, LOGICALREF from LG_001_ITEMS where CODE='9789750723322'


Bu sorgu sonucunda eğer kayıt var ise KONTROL için 1 dönmesi gerekir. Ama bu kodda bir malzeme yoksa KONTROL için de 234324 gibi bir veri dönüyor.


Bir if ile KONTROL 1 ise malzeme bulundu, dönen LOGICALREF de doğrudur sonucunu ortaya çıkartıyorum.


12/10/17 12:06


Ramarslan

Cevaplar için teşekkürler.


Kendim sorunu aşağıdaki query ile çözdüm:

select ISNULL((select LOGICALREF from LG_001_ITEMS where CODE='xxx'), 0) as LOGICALREF


Buna göre, "select LOGICALREF from LG_001_ITEMS where CODE='xxx'" querysi eğer null dönerse bana 0 değeri verecek, zaten LOGICALREF=0 olamayacağından ben bu kodlu ürünün ITEMS tablosunda olmadığını anlayacağım. 


Eğer en sona "as LOGICALREF" koymazsanız yine çalışmıyor. 


12/10/17 12:19


NaciO

Onaylanmış Cevap

Konuyla ilgili REST servis query arayüzüne  "unSafe" isimli  yeni sorgu arayüzü oluşturuldu. Aşağıdaki şekilde gönderilen sorgular Logo Objects'i kullanmıyor, dolayısıyla bu sıkıntı da yaşanmıyor.

..../api/v1/queries/unsafe?tsql=select LOGICALREF from LG_001_ITEMS where CODE = 'M.01'




17/10/17 13:45


ramazanonur

Yanlış hatırlamıyorsam unsafe, rest v1.8.1 ve öncesinde yok. Bu sürümlerde çalışma yapanlar için önemli bir bilgi.


17/10/17 14:05

Cevap vermek için giriş yapmanız gerekmektedir.