TQuery kullanarak veri girişi veya veri kaydı yapma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Kacak
Üye
Mesajlar: 21
Kayıt: 05 Nis 2005 02:59
Konum: Ankara

TQuery kullanarak veri girişi veya veri kaydı yapma

Mesaj gönderen Kacak »

Forumda aradım bulamadım. TQuery kullanarak veri girişi veya veriyi kaydetme nasıl yapılır bilen var mı acaba?
Query'nin cachedUpdates:=True yaptıktan sonra onupdaterecord'una // ile birşeyler yazınca oluyordu sanıyorum. Ama 'Table is read only' mesajı alıyorum. Query'den çektiğim alana veri girişi yapmak veya kaydı güncellemek istiyorum. Bilen varsa yardım etsin lütfen. Veritabanı Oracle.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hatayı nerde verdiğini tam olarak yazarsan daha da yardımcı olabiliriz.

tquery bileşeni programın çalışma anında bir yerde kapanıyor olabirilmi.

birde
Kacak yazdı:cachedUpdates:=True yaptıktan sonra onupdaterecord'una // ile birşeyler yazınca oluyordu
bunlarla ilgili bi değişiklik yapmana gerk yok bildiğim kadarı ile
tquery kullanmayalı uzun zaman oldu
ben artık ibquery kullanıyorum.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kayıt etme işlemini nasıl yaptığını yazsaydın.Veritabanına nasıl bağlandığını yazsaydın.vssss. gibi gerekli olanları yazman lazım.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
Kacak
Üye
Mesajlar: 21
Kayıt: 05 Nis 2005 02:59
Konum: Ankara

Mesaj gönderen Kacak »

Oracle'da bir tablom var. Şahıs özetlerinin tutulduğu. Ben projeyi kullanan şahsın şubesine göre sadece kendi şubesinin özet kayıtlarını görsün diye bir Query kullanıyorum. Ancak kullanıcı bunu sadece görmeyecek, aynı zamanda güncelleyecek veya şubesinin girdiği kayıt yoksa buraya kayıt girebilecek.
Yani benim bir tane DbMemo'm var ve bu da SAHIS_OZET tablosunun açıklama alanına bağlı. Şahıs kaydı geldiğinde detail tablo gibi kullandığım bu Query'den o şahsın (yalnızca kendi şubesi tarafından girilen) özet alanını görebiliyor. Ama Post deyince bu 'read only' hatasını alıyorum.

Query1.post yazıyorum. (Yanlış mı yazıyorum acaba ?? )
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba ,
TQuery nin RequestLive özelliğini TRUE yapmayı denediniz mi?
TQuery ile VT de SQL kullanmadan tablo kullanır gibi değişiklik yapmak için POST edebilmek için mutlaka REquestLive özelliğini TRUE yapmalısınız. iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

@vkamadan in söylediğine ilaveten cachedUpdates kullanıyorsan (üzeinde F1 yaparsan daha detaylı kullanımını görebilirsin, ben kısa bir örnek veriyorum);

Kod: Tümünü seç

procedure TForm1.DetailBeforeClose(DataSet: TDataSet);
begin
  if Master.UpdatesPending or Detail.UpdatesPending then
    if Master.UpdateStatus = usInserted then
      Database1.ApplyUpdates([Master, Detail])
    else
      Database1.ApplyUpdates([Detail, Master]);
end;
yapmalısın.. cachedUpdates olayı gereklı mi bilemiyorum :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Kacak
Üye
Mesajlar: 21
Kayıt: 05 Nis 2005 02:59
Konum: Ankara

Mesaj gönderen Kacak »

vkamadan ve rsimsek abilerime teşekkür ederim. RequestLive özelliğini TRUE yaptım ve ApplyUpdates yaptım oldu. cachedUpdates olayı gerekli değilmiş, ben yanlış biliyormuşum. İlgilenen herkese çok teşekkürler.


:cry: Bu teşekkür mesajını yazdıktan sonra tekrar 'Table is read only ' mesajını alıyorum. En iyisi aşağıda yazdığım soruma yardım ederseniz farklı bir yoldan kayıt girdirmeyi deneyeceğim. TTable nesnesini kullanarak mesela..
En son Kacak tarafından 20 Haz 2005 11:47 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
Kacak
Üye
Mesajlar: 21
Kayıt: 05 Nis 2005 02:59
Konum: Ankara

Aynıkonu ile ilgili başka problem,değişkeni queryde kullanım

Mesaj gönderen Kacak »

Veritabanım Oracle. SAHIS tablomda SAHIS_NO alanım var. SAHIS_OZET tablomda da SAHIS_NO(number), OZET(Varchar2 4000)) ve SUBE (char8)alanlarım var.

Personel projeyi çalıştırdığında şifre tablosundan SUBE değerini alıyorum. SUBE değişkenini global tanımladım ve DM içerisinde tanımladım. SAHIS_OZET adında bir Query kullanıyorum. Şahıs geldiğinde ona özeti giren şahsın şubesi tarafından girilen ve şahsa ait özet bilgilerinin görülmesi için Query kullanıyorum;



DM.Q_SAHIS_OZET.cancel;
DM.Q_SAHIS_OZET.Sql.Clear;
DM.Q_SAHIS_OZET.Sql.Add('Select SAHIS_NO,SAHIS_OZET From SAHIS_OZET ');
DM.Q_SAHIS_OZET.Sql.Add('where SUBE_KODU='+CHR(39)+ sube +chr(39)+' and SAHIS_NO='+CHR(39)+dm.T_sahisSAHIS_NO.ASSTRING+CHR(39) );
DM.Q_SAHIS_OZET.Active:=True;

SAHIS tablosunun onSCroll'unda da yukarıdaki procedürü çalıştırıyorum. Ve böylece kaydı görüyorum.

Amacım projenin başında (şifre girerken) aldığım kullanıcının SUBE değişkenine göre Querynin çalışması, otomatikman şahsa ait ve giren kullanıcının şubesi tarafından girilen kaydın gözükmesi. Şahsın kendi şubesi tarafından girilen özet bilgilerine ekleme yapabilmesi, ancak başka bir şube tarafından girilmiş özet bilgisini görememesi. Yani bir şahsın SAHIS_OZET tablosunda birden fazla kaydı olabiliyor.

Parametre kullanmayı bilmiyorum, hep hata ile karşılaştım. Forumda aradım, yine hata yaptım. Yukardaki olayı parametre ile veya daha mantıklı nasıl çözerim.
Yardımlarınız için şimdiden teşekkürler.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

1. Oracle çok daha karmaşık bir veritabanı olduğundan bağlandığınız kullanıcının yetkileri kısıtlanmış sadece select hakkı olabilir :?:

2.

Kod: Tümünü seç

DM.Q_SAHIS_OZET.Close; // cancel; değil!! açık Query ye yeni bir sorgu ekliyemezsın!
DM.Q_SAHIS_OZET.Sql.Clear;
DM.Q_SAHIS_OZET.Sql.Add('Select SAHIS_NO,SAHIS_OZET From SAHIS_OZET ');
DM.Q_SAHIS_OZET.Sql.Add('where SUBE_KODU = '':xSUBE'' and SAHIS_NO = '':xSAHIS_NO''');  // tipleri string olduğundan tırnaklar içinde yazıyoruz.
// şeklinde kullanıp;
DM.Q_SAHIS_OZET.ParamByName('xSUBE').AsString := sube;  // : ile başlayan değişkenler dışarıdan verilecek parametrelerdir.
DM.Q_SAHIS_OZET.ParamByName('xSAHIS_NO').AsString := dm.T_sahisSAHIS_NO.ASSTRING;
DM.Q_SAHIS_OZET.Active:=True; 
şeklinde parametrik yapabilirsin..
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla