Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
SQLQueryl : Cannot open a non-select statement hatası
#1
arkadaşlar bu hata nedir acaba  kod 1 kere hata vermeden çalışıyor ikinciye bu hatayı veriiyor.
 Bu istisna türü yoksay ?  işaretlesem bir daha hata vermeyecek ama neden hata verdiğini öğrenmek istiyorum web de anlayacağım şekilde bir şey bulamadım. 
editör üzerinde tabloya bağlandığımda hata vermiyor kodla bağlanmak istediğimde ikincide bu hatayı alıyorum

saygılarımla.


Hata ayıklayıcı Özel Durum Bildirimi
Proje BowlingPrgSOLv5, EDatabaseError’ istisnasını kaldırdı:
SQLQueryl : Cannot open a non-select statement
At address 10025DEA3
 Bu istisna türü yoksay

IBConnection1.Password:=_vtSifreLane;
IBConnection1.Connected:=false;
SQLTransaction1.Active:=false;
SQLQuery1.Active:=false;
IBConnection1.DatabaseName:='127.0.0.1:C:\SBOWv5\BowlingRv5\system\DB\VT_TURNUVA.FDB';
IBConnection1.Connected:=True;
SQLTransaction1.Active:=True;
SQLQuery1.Active:=True;

SQLQuery1.Close;
SQLQuery1.Clear;
SQLQuery1.SQL.Text:='update TBL_TRNV set GAME'+IntToStr(1)+'=:d1 where BID=03042021131920';
SQLQuery1.Params.ParamByName('d1').Value:=IntToStr(120+sa);

SQLQuery1.ExecSQL;

SQLTransaction1.CommitRetaining;
ShowMessage('ok'); 
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#2
(03-04-2021, Saat: 21:12)sadikacar60 Adlı Kullanıcıdan Alıntı: arkadaşlar bu hata nedir acaba  kod 1 kere hata vermeden çalışıyor ikinciye bu hatayı veriiyor.
 Bu istisna türü yoksay ?  işaretlesem bir daha hata vermeyecek ama neden hata verdiğini öğrenmek istiyorum web de anlayacağım şekilde bir şey bulamadım. 
editör üzerinde tabloya bağlandığımda hata vermiyor kodla bağlanmak istediğimde ikincide bu hatayı alıyorum

saygılarımla.


Hata ayıklayıcı Özel Durum Bildirimi
Proje BowlingPrgSOLv5, EDatabaseError’ istisnasını kaldırdı:
SQLQueryl : Cannot open a non-select statement
At address 10025DEA3
 Bu istisna türü yoksay

IBConnection1.Password:=_vtSifreLane;
IBConnection1.Connected:=false;
SQLTransaction1.Active:=false;
SQLQuery1.Active:=false;
IBConnection1.DatabaseName:='127.0.0.1:C:\SBOWv5\BowlingRv5\system\DB\VT_TURNUVA.FDB';
IBConnection1.Connected:=True;
SQLTransaction1.Active:=True;
SQLQuery1.Active:=True;

SQLQuery1.Close;
SQLQuery1.Clear;
SQLQuery1.SQL.Text:='update TBL_TRNV set GAME'+IntToStr(1)+'=:d1 where BID=03042021131920';
SQLQuery1.Params.ParamByName('d1').Value:=IntToStr(120+sa);

SQLQuery1.ExecSQL;

SQLTransaction1.CommitRetaining;
ShowMessage('ok'); 

IBConnection1.Password:=_vtSifreLane;
IBConnection1.Connected:=false;
SQLTransaction1.Active:=false;
SQLQuery1.Active:=false;
IBConnection1.DatabaseName:='127.0.0.1:C:\SBOWv5\BowlingRv5\system\DB\VT_TURNUVA.FDB';
IBConnection1.Connected:=True;
SQLTransaction1.Active:=True;
//SQLQuery1.Active:=True;

SQLQuery1.Close;
SQLQuery1.Clear;
SQLQuery1.SQL.Text:='update TBL_TRNV set GAME'+IntToStr(1)+'=:d1 where BID=03042021131920';
SQLQuery1.Params.ParamByName('d1').Value:=IntToStr(120+sa);

SQLQuery1.ExecSQL;

SQLTransaction1.CommitRetaining;
ShowMessage('ok');

Merhaba,
  • İlk kez tıkladığınızda SQLQuery1 nesnesi boş olduğu için SQLQuery1 "Active" olduğunda bir hata almıyorsunuz.
  • İkincil tıklayışta "update" komutu yürütülüp, temizlenmediği için, tekrar "Active" edildiğinde "select" harici bir kayıt döndürmeyen sorgu kullandığınızı söylüyor.
  • Bunun için SQLQuery1'i aktif etmenize gerek yok. SQL yürütüldüğü zaman zaten aktif olacaktır.

İyi çalışmalar.
kisisel_logo_dark.png
WWW
Cevapla
#3
eski örnekleri inceledim. gereğinden fazla açma kapama yapmaya calışıyormusum. bir şeyi merak ettim bir veritabanına
kaç adet bağlantı yapabiliriz mesela 20 adet bağlantı aynı veritabanına bağlansa sorun olur mu.
saygılarımla.


aşagıdaki şekilde 20 adet IBConnection kullansam bir problem yaratırmı.
  _RecPcFolderYol:=ExtractFilePath(Application.Exename);
 IBConnection1.DatabaseName:=_RecPcFolderYol+'system\DB\TBOWRDB.FDB';
 IBConnection1.Password:='masterkey';
 IBConnection1.Connected:=true;

 IBConnection2.DatabaseName:=_RecPcFolderYol+'system\DB\TBOWRDB.FDB';
 IBConnection2.Password:='masterkey';
 IBConnection2.Connected:=true;  
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#4
(04-04-2021, Saat: 12:09)sadikacar60 Adlı Kullanıcıdan Alıntı: eski örnekleri inceledim. gereğinden fazla açma kapama yapmaya calışıyormusum. bir şeyi merak ettim bir veritabanına
kaç adet bağlantı yapabiliriz mesela 20 adet bağlantı aynı veritabanına bağlansa sorun olur mu.
saygılarımla.


aşagıdaki şekilde 20 adet IBConnection kullansam bir problem yaratırmı.
  _RecPcFolderYol:=ExtractFilePath(Application.Exename);
 IBConnection1.DatabaseName:=_RecPcFolderYol+'system\DB\TBOWRDB.FDB';
 IBConnection1.Password:='masterkey';
 IBConnection1.Connected:=true;

 IBConnection2.DatabaseName:=_RecPcFolderYol+'system\DB\TBOWRDB.FDB';
 IBConnection2.Password:='masterkey';
 IBConnection2.Connected:=true;  

Merhaba,
Buradaki amacınız nedir acaba? Neden 20 Farklı Connection?
Cevapla
#5
anlatması zor deneyeyim.  A ve B olmak üzere 2 adet pc var
her 2 bilğisayardada aynı tablodan olsun istiyorum. B bilğisayarında kaydedilen data belirli aralıkda A bilğisayarındaki aynı tabloyada kaydedilsin eşitlensin istiyorum.
burdaki B bilğisayarların sayısı artabilir.

diyelimki A pc B1 pc B2 pc var   B1 ve B2 pc lerdeki datalar belirli zamanlarda A pc sine bağlanıp aynı tabloları güncelleme yapsınlar
burda 1 veritabanı oluşturup içine farklı tablolar mı koyayım yoksa her B pc için ayrı ayrı veritabanlarımı oluşturayım.  hangisi daha sağlılı olur onu merak ettim. ben her pc için A pc de bir veritabanı oluşturayım diyorum
saygılarımla
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#6
(04-04-2021, Saat: 14:25)sadikacar60 Adlı Kullanıcıdan Alıntı: anlatması zor deneyeyim.  A ve B olmak üzere 2 adet pc var
her 2 bilğisayardada aynı tablodan olsun istiyorum. B bilğisayarında kaydedilen data belirli aralıkda A bilğisayarındaki aynı tabloyada kaydedilsin eşitlensin istiyorum.
burdaki B bilğisayarların sayısı artabilir.

diyelimki A pc B1 pc B2 pc var   B1 ve B2 pc lerdeki datalar belirli zamanlarda A pc sine bağlanıp aynı tabloları güncelleme yapsınlar
burda 1 veritabanı oluşturup içine farklı tablolar mı koyayım yoksa her B pc için ayrı ayrı veritabanlarımı oluşturayım.  hangisi daha sağlılı olur onu merak ettim. ben her pc için A pc de bir veritabanı oluşturayım diyorum
saygılarımla

Merhaba,

bunun yerine bir sunucu bilgisayarı oluşturup veri tabanını o bilgisayarda çalıştırınız. İstediğiniz kadar bilgisayarı o sunucuya bağlayıp verileri kaydedebilirsiniz. Senkrone olmuş olur, ek olarak bir daha senkrone ile uğraşmak zorunda kalmazsınız diye düşünmüyorum.
kisisel_logo_dark.png
WWW
Cevapla
#7
(04-04-2021, Saat: 14:25)sadikacar60 Adlı Kullanıcıdan Alıntı: anlatması zor deneyeyim.  A ve B olmak üzere 2 adet pc var
her 2 bilğisayardada aynı tablodan olsun istiyorum. B bilğisayarında kaydedilen data belirli aralıkda A bilğisayarındaki aynı tabloyada kaydedilsin eşitlensin istiyorum.
burdaki B bilğisayarların sayısı artabilir.

diyelimki A pc B1 pc B2 pc var   B1 ve B2 pc lerdeki datalar belirli zamanlarda A pc sine bağlanıp aynı tabloları güncelleme yapsınlar
burda 1 veritabanı oluşturup içine farklı tablolar mı koyayım yoksa her B pc için ayrı ayrı veritabanlarımı oluşturayım.  hangisi daha sağlılı olur onu merak ettim. ben her pc için A pc de bir veritabanı oluşturayım diyorum
saygılarımla

Her PC için ayrı bağlantı ayrı tablo kullanmanın mantığı nedir ki? Hangi PC den kaydedildiğini görmek istiyorsanız aynı tabloya bir alan daha oluşturup PC adını  kaydettirebilirsiniz. Eğer kullanıcıların birbirinin kaydettiği verileri görmesini istemezseniz buna göre verileri getirirsiniz. Ya soruyu tam anlamadım ya da bu işte çok büyük terslik var Smile
Bana bişey anlatırsan unuturum. Öğretirsen hatırlarım. Ama beni işe dahil edersen ÖĞRENİRiM
Cevapla
#8
sunucu olmaz gerektiğinde her B pc kendi başına bağımsız çalışıp kayıtlarını yapmalı.

ben A pc ye bir veritabanı oluşturup içine her B pc için 1 adet tablo oluşturacağım. B pc ler gerektiğinde bağlanıp bilğileri bu tablolara kaydedecek şekilde düzenleyeceğim.

saygılarımla
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#9
Merhaba.

Başlığı ve diğer benzeri çok PC yerel veritabanı üzerine başlığı ilgiyle izliyorum. Orjinal bir strateji çıkacak diye değerlendiriyorum.

- A PC ve diğer B PC'leri arasında bir protokol düşündünüz mü ? Talep sadece veritabanı ile değil de bir socket haberleşmesini de dahil etmek isteyebilirsiniz. Kasıt tabii değildir ki socket üzerinden giriş yapılan veri transferi, sadece "veritabanımda tablodabir değişiklik oldu bilginiz olsun" şeklinde.. Bu A PC'de bir sayaç içinde tutulur ve bu sayı bir değere ulaştığında synchronize sağlanır.

- Böylece A PC'de bir dashboard üzerinde kaç adet B PC aktif, kaç tanesinde ne değişiklik oldu bilgisi de görülebileceği gibi, bir kullanıcı SYNCH butonu ile de anlık sonuçlar alınabilir.

- Bir ek olarak da B PC'ler A PC'deki bu LOG tablosuna sorarak işlemden önce ilgilendikleri bir tabloda değişiklik yoksa gerekli raporlamayı yapar, varsa önce uzaktan SYNC butonu işlemini yaptırır sonra raporlamaya geçer.

- Bunun benzerini kendi ERP sistemimde ana sadece maliyet hareketleri için kullanıyorum. Ana bilgisayara her zaman erişim TCP üzerinden olup, veritabanı sunucusu ile iletişim VPN üzerinden sağlandığından VPN açıp kapatma işlemini sınırlandırmış oluyorum. ( kurum VPN'i bizde SMS onayı ile sağlanıyor çünkü )

Belki başlığı okuyan birinin işine yarayan bir strateji önerisi olur saiki ile paylaşayım dedim.

Başarılar.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#10
bu bir bowling oyun programı bowling salonlarında kullanılan. benim üzerinde çalıştığım bir iki küçük salondada uyguladığım bir proje.

bir bowling salonuna gidersiniz resepsiyonda görevliden bowling ayakkabısı alırsınız parasını ödersiniz resepsiyondaki pc den size oyun açar derki 3 yolda oyununuz açıldı gidip oynayabilirsiniz.  muhtemelen bilmeyen yoktur.

projeye ilk başladığımda haberleşmeyi tcp server-client haberleşmesi seklinde soket haberleşmesi olarak yazdım. ofis ortamında kusursuz çalışan bu sistem salona uygulandığında şöyle bir sorun çıktı. değişik belirsiz zamanlarda oyun açtığınız zaman bilğiler resepsiyon pc den oyun pc ye gitmiyor yolda kayboluyordu her zaman yapmasada çok yanlış zamanlarda böyle bir sorun çıktığında her şey karışıyordu.

sonra bilğileri soket haberleşme ile değilde direkt veritabanına bağlanıp kaydettim ve bir timer ile tablodan oyun açılıp açılmadığını kontrol ederek oyun açıldıysa oyunu açacak şekilde ayarlama yaptım bu sorundan kurtuldum.

bir şeyler yapmaya çalışıyorum ama her şeye hakim olarak değil deneye deneye yapıyorum. örneğin böyle bir oyun sistemi için en ideal sistem nedir bilmiyorum. farklı bir şeyler öğrendikçe uygulamaya çalışıyorum.

mevcut programda resepsiyonda kasa programı var oyun açtığınız zaman bilğileri hem respsiyon pc ye hemde oyun pc ye kaydediyorum.
resepsiyon pc de oyun kaç tl den hangi saatte açılmış gibi bilğileri saklarken oyun pc de oyuncuların atışları ve puanları kaydediliyor.
mesela oyun bittiğinde puanlarınız çıktı almak istediğinizde oyun pc ye bağlanıp rapor şeklinde çıktı verebiliyorum.

program mevcut haliyle gayet düzgün çalışıyor.
fakat hep merak ettiğim şey bir başkası nasıl yapardı veya farklı bir yol metod var mı acaba.  mesela programa turnuva modunu eklemem lazım.
haberleşmeyi resepsiyon pc den yapmaya karar verdim. bir timer koyup belirli aralıklarlar tüm oyun pc lere bağlanıp. ordaki kayıtları resepsiyon pc deki kayıtlarla eşitleyecek bir döngü yapsam iyi olur diye düşünüyorum böylece ihtiyaç duyduğum tüm sorguları oyun pc lere bağlanıp yapmak yerine resepsiyon pc den yapabilirim diye düşünüyorum.

saygılarımla
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  firebird bağlantı hatası. Kamuran Alpkaya 17 19.146 06-08-2025, Saat: 14:20
Son Yorum: mcuyan
  FB matematiksel işlem de parametre hatası mcuyan 4 1.545 23-08-2024, Saat: 17:26
Son Yorum: mcuyan
  Select iif As İfadesinde Oluşan Boşluklar sunbeki 8 3.308 21-04-2022, Saat: 22:55
Son Yorum: sunbeki
  deadlock hatası baloglurecep 9 4.621 23-12-2021, Saat: 03:40
Son Yorum: vedat35
Photo Firebird hatası HakanY 4 2.208 16-10-2021, Saat: 20:31
Son Yorum: HakanY



Konuyu Okuyanlar: 1 Ziyaretçi