Update

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Update

Mesaj gönderen brs »

İyi akşamlar arkadaşlar.

MyQuery1.RecNo da oluşan sayısı SIRA_NO alanına update nasıl yapabilirim?

procedure TForm2.Button4Click(Sender: TObject);
begin
MyQuery1.Close;
MyQuery1.SQL.Clear;
MyQuery1.SQL.Add ('UPDATE Liste SET SIRA_NO='+IntToStr(MyQuery1.RecNo+'')); Hata alanı
MyQuery1.ExecSQL;
MyQuery1.SQL.Text := 'Select * From Liste';//Tekrar Listele
MyOQuery1.Open;
end;

Hata kodu: ([DCC Error] Unit9.pas(198): E2010 Incompatible types: 'string' and 'Integer')
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Update

Mesaj gönderen xozcanx »

brs yazdı:İyi akşamlar arkadaşlar.

MyQuery1.RecNo da oluşan sayısı SIRA_NO alanına update nasıl yapabilirim?

procedure TForm2.Button4Click(Sender: TObject);
begin
MyQuery1.Close;
MyQuery1.SQL.Clear;
MyQuery1.SQL.Add ('UPDATE Liste SET SIRA_NO='+IntToStr(MyQuery1.RecNo+'')); Hata alanı
MyQuery1.ExecSQL;
MyQuery1.SQL.Text := 'Select * From Liste';//Tekrar Listele
MyOQuery1.Open;
end;

Hata kodu: ([DCC Error] Unit9.pas(198): E2010 Incompatible types: 'string' and 'Integer')

MyQuery1.SQL.Add ('UPDATE Liste SET SIRA_NO='+(IntToStr(MyQuery1.RecNo)));


şeklinde denermisin,,
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Update

Mesaj gönderen brs »

Sayın xozcanx İlginiz için çok teşekkür ederim "delphi türkiye" bugün son kez giriş yapacaktım açmış olduğum yaklaşık 12 konuya 3 cevap alabildim benim gibi diğer konu açmış olan arkadaşlarda'da aynı sıkıntı olduğunu düşünüyorum cevabınız için tekrar teşekkür ederim...


Kod çalıştı ama sanırım bende bir hata var SQL komutu hiç kullanmadım desem yanlış olmaz yapmak istediğim
MyQuery de seçili olan satır Recno yu SIRA_NO alanına update etmek istiyorum fakat kod tüm kayıtlara sıra numaralarını 0 olarak update yapıyor tekrar yardımcı olursanız sevinirim...
xozcanx yazdı:
brs yazdı:İyi akşamlar arkadaşlar.

MyQuery1.RecNo da oluşan sayısı SIRA_NO alanına update nasıl yapabilirim?

procedure TForm2.Button4Click(Sender: TObject);
begin
MyQuery1.Close;
MyQuery1.SQL.Clear;
MyQuery1.SQL.Add ('UPDATE Liste SET SIRA_NO='+IntToStr(MyQuery1.RecNo+'')); Hata alanı
MyQuery1.ExecSQL;
MyQuery1.SQL.Text := 'Select * From Liste';//Tekrar Listele
MyOQuery1.Open;
end;

Hata kodu: ([DCC Error] Unit9.pas(198): E2010 Incompatible types: 'string' and 'Integer')

MyQuery1.SQL.Add ('UPDATE Liste SET SIRA_NO='+(IntToStr(MyQuery1.RecNo)));


şeklinde denermisin,,
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Update

Mesaj gönderen esistem »

Selam, neden böyle bişi yapmak istiyorsunuz onu anlamadım ben. Sonuçta her filtre veya index (sıralama) kullandığınızda değişicek recno. Rec no yu kaydetmek istersenizde şöyle bir yol izleyebilirsiniz. Önce liste tablosunu bir query ile çekin, sonra bu query i while not xxx.eof ile döngüye sokun, her döngü dede update işlemini ona göre yapın istediğiniz olur, Örneklemek gerekirse.
önce listever isminde bir query ile verilerinizi çekin,

Kod: Tümünü seç

QLISTEVER.SQL.ADD('SELECT * FROM LISTE');
sonra donguye sokup her satırı update edin.

Kod: Tümünü seç

QLISTEVER.FIRST;
WHILE NOT QLISTEVER.EOF do begin
QGUNCELLE.SQL.ADD('UPDATE lıste SET SIRA_NO='+INTTOSTR(QLISTEVER.RECNO)+' WHERE ID='+QLISTEVERID.ASINTEGER);
QLISTEVER.NEXT;
                                              end;
bu arada liste tablonuzda ID ve SIRA_NO şeklinde alanlarınız olduğunu varsayıyorum. Eğer yoksa WHERE SIRA_NO='+QLISTEVERSIRA_NO.ASINTEGER da diyebilirsiniz ama doğru çalışırmı bilmiyorum zira o andaki recno ile aynı olan önceki bir sıra_no var ise ortalık epey bir karışır ki %99 olacaktır zaten onu engellemek için önce

Kod: Tümünü seç

QGUNCELLE.SQL.ADD('UPDATE lıste SET SIRA_NO=0');
gibi bir kodu çalıştırmak mantıklı olacaktır. Ama yinede bunu niçin kullanıcaksınız merak ettim doğrusu.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Update

Mesaj gönderen brs »

selam esistem teşekkür ederim belkide yanlış izliyor olabilirim bilemiyorum aslında yapmak istediğim şey dbgrid deki her hangi bir satırları yukarı veya aşağıya taşımak

esistem yazdı:Selam, neden böyle bişi yapmak istiyorsunuz onu anlamadım ben. Sonuçta her filtre veya index (sıralama) kullandığınızda değişicek recno. Rec no yu kaydetmek istersenizde şöyle bir yol izleyebilirsiniz. Önce liste tablosunu bir query ile çekin, sonra bu query i while not xxx.eof ile döngüye sokun, her döngü dede update işlemini ona göre yapın istediğiniz olur, Örneklemek gerekirse.
önce listever isminde bir query ile verilerinizi çekin,

Kod: Tümünü seç

QLISTEVER.SQL.ADD('SELECT * FROM LISTE');
sonra donguye sokup her satırı update edin.

Kod: Tümünü seç

QLISTEVER.FIRST;
WHILE NOT QLISTEVER.EOF do begin
QGUNCELLE.SQL.ADD('UPDATE lıste SET SIRA_NO='+INTTOSTR(QLISTEVER.RECNO)+' WHERE ID='+QLISTEVERID.ASINTEGER);
QLISTEVER.NEXT;
                                              end;
bu arada liste tablonuzda ID ve SIRA_NO şeklinde alanlarınız olduğunu varsayıyorum. Eğer yoksa WHERE SIRA_NO='+QLISTEVERSIRA_NO.ASINTEGER da diyebilirsiniz ama doğru çalışırmı bilmiyorum zira o andaki recno ile aynı olan önceki bir sıra_no var ise ortalık epey bir karışır ki %99 olacaktır zaten onu engellemek için önce

Kod: Tümünü seç

QGUNCELLE.SQL.ADD('UPDATE lıste SET SIRA_NO=0');
gibi bir kodu çalıştırmak mantıklı olacaktır. Ama yinede bunu niçin kullanıcaksınız merak ettim doğrusu.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Update

Mesaj gönderen esistem »

tekrar selam, siz bence ne yapmak istediğinizi düzgün anlatamadınız ve olayı kavrayamadınız. Satırları aşağı ve yukarı taşımak değilde kayıtlarımın sıralarını değiştirmek istiyorum deseniz daha doğru olur, yani adına göre a dan z ye veya z den a ya veya adına göre a dan z ye ama soyadına göre z den a ya dizmek istiyorum deseniz bu iş çok kolay olur. Yoksa dbgrid de satırı aşağıya alma veya 2 üste alma gibi bi olay yoktur. ORDER BY komutu sizin işinizi çok güzel çözer, "ORDER BY SQL" yazıp google da aratın, kısaca sıralama demektir, kayıtlarınızı istediğiniz sıraya dizmeye yarar, dbgrid de zaten sıralı kayıtlarınızı gösterir. SQL komutudur. ASC ve DESC olarak (Artan ve Azalan) olarak kullanılır. SQL sorgusunda da where satırından sonra kullanılır (where var ise tabi yoksa direk yazılabilir) örnek ;

Kod: Tümünü seç

SELECT kod, adi, soyadi FROM TABLO
WHERE kod>5
ORDER BY adi, soyadi
veya

Kod: Tümünü seç

SELECT kod, adi, soyadi FROM TABLO
ORDER BY adi, soyadi
veya

Kod: Tümünü seç

SELECT kod, adi, soyadi FROM TABLO
ORDER BY adi ASC, soyadi DESC /*adi artan sıralamada soyadi azalan siralamada getir*/
vs.vs. deneyin görün.
kısaca siz bence SQL çalışın biraz, nedir ne değildir, nasıl kullanılır, yazım kuralları nelerdir vs.vs.
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Update

Mesaj gönderen yusuf simsek »

brs yazdı:MyQuery1.Close;
MyQuery1.SQL.Clear;
MyQuery1.SQL.Add ('UPDATE Liste SET SIRA_NO='+IntToStr(MyQuery1.RecNo+'')); Hata alanı
MyQuery1.ExecSQL;
MyQuery1.SQL.Text := 'Select * From Liste';//Tekrar Listele
MyOQuery1.Open;
- Öncelikle buradaki hata; MyQuery1.Close; yaptığın için MyQuery1.RecNo gidiyor!!! Query kapalı iken ( içerisinde hiçbir kayıt yokken ) Kayıt Numarasını almaya çalışıyorsun...

- Sıralama için basit olarak tablona integer tipinde Sira alanı ekle, formda yukarı aşağı butonu tıklandığında Sira alanını güncelle...

- Sorguna da ORDER BY Sira satını ekle...
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Update

Mesaj gönderen brs »

Teşekür ederim Yusuf şimşek...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla