XML, XSL ve Ajax ile Hızlı Uygulama GeliştirmeMoreMotion Kullanıcı Forumu
 
[V4 Öncesi Advanced Suite - mmDesigner] SQL metninde tırnak işareti kullanımı
Oluşturan
dazdi [dazdi]2005.12.26 12:57:50
SQL Servera gönderdiğimiz text içinde tırnak işareti geçtiğinde program mesaja düşüyor. 
Bunu  delphide QuotedStr functionu ile önleyebiliyoruz. Burada buna benzer bir çözüm varmı ? Yada text içinde   tırnak  işareti oldugunda bunu database e write yada update için gönderirken nasıl bir yol izliyorsunuz ? 
CevaplayanlarTarih
aycan [Aycan Kadırgan]2005.12.26 13:09:26
Çözüm: 'q' tanımlayıcısı 
 
Bu tür durumlardaki hatalara engel olmak için sembol adlarından önce 'q' tanımlayıcısı kullanılabilir. 'q' tanımlayıcısı, sembolün değeri döndürülürken içinde yer alan tırnakların çiftlenmesini sağlar. 
 
  UPDATE ulkeler SET NAME = '@vof(q:NAME)' WHERE ID = @vof(ID) 
 
aycan [Aycan Kadırgan]2005.12.26 13:31:25
 
Tırnak karakteri içeren metinler 
 
Tırnak karakteri içeren metinler, kullanıldıkları yere bağlı olarak özel olarak ele alınmalıdır. Aşağıdaki SQL ifadesine dikkat edin. 
 
  UPDATE ulkeler SET NAME = '@vof(NAME)' WHERE ID = @vof(ID) 
 
Eğer NAME sembolunun değeri bir tırnak karakteri içeriyorsa (örnek: 'L'Angleterre') semboller çözümledikten sonra SQL ifadesi aşağıdaki gibi olacaktır. 
 
  UPDATE ulkeler SET NAME = 'L'Angleterre' WHERE ID = 55 
 
Söz dizimi bozuk olan bu SQL ifadesi işletilince, doğal olarak, SQL hatasına neden olacaktır. 
 
Çözüm: 'q' tanımlayıcısı 
 
Bu tür durumlardaki hatalara engel olmak için sembol adlarından önce 'q' tanımlayıcısı kullanılabilir. 'q' tanımlayıcısı, sembolün değeri döndürülürken içinde yer alan tırnakların çiftlenmesini sağlar. 
 
  UPDATE ulkeler SET NAME = '@vof(q:NAME)' WHERE ID = @vof(ID) 
 
Çözümlendikten sonraki sonuç aşağıdaki gibi olacaktır. Metin içinde yer alan tek tırnak çiftlendiği için SQL ifadesinin söz dizimi geçerliliğini korumaktadır. 
 
  UPDATE ulkeler SET NAME = 'L''Angleterre' WHERE ID = 55 
 
 
 
erayizgin [Eray İzgin]2014.10.03 10:11:23

Moremotion versiyon olarak 4.3.5 kullanıyoruz ve tırnak işareti sorunu olmaması için q tanımlayıcısını kullanmaktayım fakat tek tırnak olarak yine davranmaktadır. Sürümden mi kaynaklanmakta yoksa kullanım şeklim mi yanlıs olabilir?

definition kısmı tırnak işaretli açıklamada hata almaktadır.

@set(v:Definition_Temp,'@ApproveTask('insertSendApprovalTask','@vof(incident)','@vof(v:currentUser),'@vof(q:Definition)','@vof(v:nowTime)')')