Konu: sql update yaparken başka tabloya göre filtreleme nasıl olur?
İyi günler,
Çetin H. SQL'e o kadar bulaştırdı ki, işi gücü bıraktım, eski kodları SQL server şeklinde elden geçiriyorum.
Aşağıdaki kod ile kulağı tersten gösteriyor hissine kapıldım.
- Önce nakit ve nakit_ tablolarından değişecek ref (referans noları) buluyorum. tarih sorgusu nakit tablosunda yapılıyor.
- Sonra o referansları update komutu ile nakit_ tablosunda ilgili kolonu değiştiriyorum.
tek UPDATE komutu ile nakit ten tarihi filter ederek nakit_.kimid leri değiştirebilirmiyim ??
LOCAL lnGir, komut
TEXT TO komut NOSHOW
SELECT DISTINCT nkt..nakit_.ref, kimid
FROM nkt..nakit_ INNER JOIN
nkt..nakit ON nkt..nakit_.ref = nkt..nakit.ref
WHERE (nkt..nakit_.kimid=?VAL(This.Parent.liKim.Value)
AND nkt..nakit.tarih BETWEEN ?DTOS(This.Parent.ilktar.Value) AND ?DTOS(This.Parent.sontar.Value) )
ENDTEXT
m.lnGir = SQLSTRINGCONNECT(SQL_BAGLANTI)
IF SQLEXEC(m.lnGir,m.komut)<0
anaform.hatagöster
ENDIF
m.Xrefler="0"
SCAN
SCATTER FIELDS ref MEMVAR
m.Xrefler=m.Xrefler+","+ALLTRIM(STR(ref))
ENDS
*SCAN
* SCATTER FIELDS ref MEMVAR
* SQLEXEC(m.lnGir,"UPDATE nkt..nakit_ SET kimid = ?VAL(This.Parent.liKim1.Value) WHERE (nkt..nakit_.ref = ?m.ref)")
*ENDS && aşağıdakine alternatif
TEXT to lcStatement1 TEXTMERGE noshow
UPDATE nkt..nakit_ SET kimid = ?VAL(This.Parent.liKim1.Value)
where nkt..nakit_.ref IN (<<m.Xrefler>>)
ENDTEXT
IF 0>SQLExec(lnGir, m.lcStatement1)
anaform.hatagöster
ELSE
WAIT WINDOW TIMEOUT 2 "hesap transferi tamamlandı"
ENDI
SQLDISCONNECT(m.lnGir)