Bulunan kayda göre kayıt ekleme?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

arkadaşlar combobox ta
Seçim Yapın
Ben Seçeyim
Tüm Üyeler
A Blok
C1 Blok
C2 Blok
C3 Blok

seçenekleri var
tüm üyeleri seçtiğimde buton olayına aşşağıdaki kodu yaptım çalışıyor fakat blok sutun değeri A Blok olanları kullanarak yeni kayıt nasıl açarım
örnek
kayıtları baştan sona kadar taratıp bloku seçilen bloka uyan kayıtların id nosunu kullanarak aşşağıdaki kayıtı yapacak eğer uymuyorsa sonraki kaydı denetleyecek enson kayda kadar devam edecek
ekle:='INSERT INTO hesap (kim,aidat,yakit,ay,yil,tarih) values'+'('+uyankaydın id si+','+QuotedStr(xaidat)+','+QuotedStr(xyakit)+','+QuotedStr(xay)+','+QuotedStr(xyil)+','+QuotedStr(xtarih)+')';



tablo düzenlerim
...uyeTABLOSU............------------------hesap TABLOSU--------------------
id...adi....blok------------id....kim.....aidat....aodeme....akalan.......ay
5....Ali.....C...------------1....5........70.......50..........20...........OCAK
6....veli.....d...------------2....6........70.......40..........60...........OCAK
7....cem....d...------------3....7........90.......40..........60...........MART
8....Ali.....C...------------4....5........100.......50..........50...........şubat

Kod: Tümünü seç

procedure TForm4.Button1Click(Sender: TObject);
var
yenit:TDate ;
xkim,xaidat,xyakit,ay,gun,ekle,idm,xay,xyil,xtarih:String;
s:Integer;

begin
if combobox1.Text='Ben Seçeyim' then
begin
idm:=edit3.text;
xaidat:=Edit1.Text;
xyakit:=Edit2.Text;
xay:=ComboBox3.Text;
xyil:=ComboBox2.Text;
ay:=inttostr(combobox3.itemindex);
gun:=IntToStr(15);
xtarih:=xyil+'-'+ay+'-'+gun;
ekle:='INSERT INTO hesap (kim,aidat,yakit,ay,yil,tarih) values'+'('+idm+','+QuotedStr(xaidat)+','+QuotedStr(xyakit)+','+QuotedStr(xay)+','+QuotedStr(xyil)+','+QuotedStr(xtarih)+')';
ZQuery2.SQL.Text:=ekle;  //Zquery1--->Zeos Bileşeni
ZQuery2.ExecSQL;
ZQuery1.Close;
ZQuery1.Open;
DBGrid2.Visible:=false;
dbgrid1.Visible:=true;
 GridAyarla(DBGrid1);
  DBGrid1.DataSource.DataSet.Fieldbyname('id').Visible:=false;
Edit3.Text:=DBGrid1.DataSource.DataSet.Fieldbyname('id').AsString

end
else
if combobox1.Text='Tüm Üyeler' then
 for s:=1 to Form4.ZQuery2.RecordCount do
begin

xaidat:=Edit1.Text;
xyakit:=Edit2.Text;
xay:=ComboBox3.Text;
xyil:=ComboBox2.Text;
ay:=inttostr(combobox3.itemindex);
gun:=IntToStr(15);
xtarih:=xyil+'-'+ay+'-'+gun;
//yenit:=StrToDate(xtarih);
//ShowMessage(DateToStr(yenit));
ekle:='INSERT INTO hesap (kim,aidat,yakit,ay,yil,tarih) values'+'('+IntToStr(s)+','+QuotedStr(xaidat)+','+QuotedStr(xyakit)+','+QuotedStr(xay)+','+QuotedStr(xyil)+','+QuotedStr(xtarih)+')';
ZQuery2.SQL.Text:=ekle;  //Zquery1--->Zeos Bileşeni
ZQuery2.ExecSQL;
ZQuery1.Close;
ZQuery1.Open;
DBGrid2.Visible:=false;
dbgrid1.Visible:=true;
 GridAyarla(DBGrid1);
  DBGrid1.DataSource.DataSet.Fieldbyname('id').Visible:=false;
Edit3.Text:=DBGrid1.DataSource.DataSet.Fieldbyname('id').AsString

 end;
end;
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

aşşağıdaki gibi bişeyler yaptım ama hata verdi
if combobox1.Text='A Blok' then
ZQuery2.Close;
ZQuery2.SQL.Clear;
ZQuery2.SQL.Add('select uye.* from uye where uye.blok='''+ComboBox1.Text+''' ');
ZQuery2.Open;
ZQuery2.Active:=True;
for s:=1 to Form4.ZQuery2.RecordCount do
begin
ZQuery2.Next;
bul:=DBEdit1.Text;
xaidat:=Edit1.Text;
xyakit:=Edit2.Text;
xay:=ComboBox3.Text;
xyil:=ComboBox2.Text;
ay:=inttostr(combobox3.itemindex);
gun:=IntToStr(15);
xtarih:=xyil+'-'+ay+'-'+gun;
//yenit:=StrToDate(xtarih);
//ShowMessage(DateToStr(yenit));
ekle:='INSERT INTO hesap (kim,aidat,yakit,ay,yil,tarih) values'+'('+QuotedStr(bul)+','+QuotedStr(xaidat)+','+QuotedStr(xyakit)+','+QuotedStr(xay)+','+QuotedStr(xyil)+','+QuotedStr(xtarih)+')';
ZQuery2.SQL.Text:=ekle; //Zquery1--->Zeos Bileşeni
ZQuery2.ExecSQL;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen conari »

ZQuery2.Open;
ZQuery2.Active:=True;


ayni işi yapar biri gereksiz.

ZQuery2.Close;
ZQuery2.SQL.Clear;


Clear edince de oto kapanır buda gereksiz.

Sen yine başa dönmüşsün
hata verdi
Müneccim değil burda kimse.

ilk mesajında her if then begin blogunda

xaidat:=Edit1.Text;
xyakit:=Edit2.Text;
xay:=ComboBox3.Text;
xyil:=ComboBox2.Text;
v.s.v.s.v.s.


kodların çogu aynı kod kirliliği de yapmazsan daha iyi olur.
Gereksiz değişkenler v.s. kullanmayalım.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

kodu aşşağıdaki şekilde çalıştırdım hatasız çalıştı ancak çok kötü bir mantık hatası var kodda
mesala a blok ta olan kişilerin id nosu ardışık değilse 1,2,3,4,5... şeklinde
değilse başka blokun id nosunu alıyor dahada açıklayıcı olursam
aşşağıya göre 5 tane a blok var ardışık olarak 1 den başlayıp 5 e kadar inince en son kayıtta c blok taki kişiye borç yazılıyor
id/blok
1a
2a
3a
4a
5c
6c
7a
8c
kim kısmına 7 yi bu kodla yazdıramıyorum
if combobox1.Text='A Blok' then
ZQuery3.Open;
for s:=0 to Form4.ZQuery3.RecordCount-1 do
begin
bul:=ZQuery3Id.CurValue+s;
xaidat:=Edit1.Text;
xyakit:=Edit2.Text;
xay:=ComboBox3.Text;
xyil:=ComboBox2.Text;
ay:=inttostr(combobox3.itemindex);
gun:=IntToStr(15);
xtarih:=xyil+'-'+ay+'-'+gun;
ekle:='INSERT INTO hesap (kim,aidat,yakit,ay,yil,tarih) values'+'('+IntToStr(bul)+','+QuotedStr(xaidat)+','+QuotedStr(xyakit)+','+QuotedStr(xay)+','+QuotedStr(xyil)+','+QuotedStr(xtarih)+')';
ZQuery2.SQL.Text:=ekle; //Zquery1--->Zeos Bileşeni
ZQuery2.ExecSQL;
ZQuery1.Close;
ZQuery1.Open;
DBGrid2.Visible:=false;
dbgrid1.Visible:=true;
GridAyarla(DBGrid1);
DBGrid1.DataSource.DataSet.Fieldbyname('id').Visible:=false;
Edit3.Text:=DBGrid1.DataSource.DataSet.Fieldbyname('id').AsString
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

Kod: Tümünü seç

select uye.* from uye where uye.blok='''+COMBOBOX1.text+'''
bu kodda combo yerine 'A Blok' yazınca çalışıyor ancak yukardaki gibi çalışmıyor nedeni ne acaba?
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen conari »

showmessage ile oluşan sorguyu kontrol et aynı sorgu oluşuyormu?
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

Sorunu sql yerine değilde kod sayfasına yazarak giderdim çalışıyor ancak
seçeneklerden birdefa kayıt yaptırdıktan sonra ikinci kez yaptırınca hata veriyor
closed dataset diye
insert kodumun sonundaki
ZQuery2.ExecSQL;
kodu ZQuery2 yi kapatıyor heralda nasıl tekrar açılmasını sağlarım yukardaki kodlar üzerinde nereye nasıl bi kod eklemeliyim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen conari »

o query veri girişi içinmi kullanıyorsunuz ki kapansın
options kısmında Editing di sanırım orası true ise false yap.

ZQuery1.Close;
ZQuery1.Open;

yerine desteklerse
ZQuery1.Requery deneyebilirsin.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

yazdığınız kodları denedim ancak olmuyor dataset closed yazıyor döngü içinde kullanmak hataya neden olurmu acaba

veri eklerken kullanıyorum
ekle:='INSERT INTO hesap (kim,aidat,yakit,ay,yil,tarih) values'+'('+IntToStr(bul)+','+QuotedStr(xaidat)+','+QuotedStr(xyakit)+','+QuotedStr(xay)+','+QuotedStr(xyil)+','+QuotedStr(xtarih)+')';
ZQuery2.SQL.Text:=ekle; //Zquery1--->Zeos Bileşeni
ZQuery2.ExecSQL;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen conari »

exex den önce ozaman
ZQuery2.append yap ilginç ama dene

tablolarda olur dediğin.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

conari yazdı:exex den önce ozaman
ZQuery2.append yap ilginç ama dene

tablolarda olur dediğin.
şimdide kayıt bile yapmadı hata şöyle

on a closed dataset
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen conari »

buda 50 küsür mesaja gitmeden kodların son halini bir yayınla bence.
bu benim bir insert kodum.

Kod: Tümünü seç

for i:=0 to StringGrid1.rowcount-1 do  begin
try
  Mainform.StatusBar1.Panels[0].Text :='Satır '+StringGrid1.Cells[0,i]+' ile işlem yapılıyor.';
  Application.ProcessMessages;
Adoupdate.SQL.text:='select * from tablo where kod='+kodum+';
if Adoupdate.recordcount=1 then begin
           Adoupdate.SQL.Text:='INSERT INTO tablo (kod, alan1, alan2, alan3, alan4, alan5, alan6) '+
                             ' VALUES (:P1,:P2,:P3,:P4,:P5,:P6,:P7 )';
         Adoupdate.Parameters[0].Value:=StringGrid1.Cells[0,i];
         Adoupdate.Parameters[1].Value:=EdHam.Text ;
         Adoupdate.Parameters[2].Value:=StrToFloat(StringGrid1.Cells[1,i]);
         Adoupdate.Parameters[3].Value:='B';
         Adoupdate.Parameters[4].Value:= opnom;
         Adoupdate.Parameters[5].Value:='S';
         Adoupdate.Parameters[6].Value:='H';
         Adoupdate.ExecSQL;
   end  else begin
       memo1.Lines.add(StringGrid1.Cells[0,i]);
       Memo1.Visible:=true;
       Lbmemo.visible:=true;
       end;
       except
       ShowMessage('Hata Var Kontrol Ediniz...');
 end;
 next ;
end;
  ShowMessage('Reçeteye Aktarım İşlemi Tamamlandı');
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

Arkadaşlar sorunu hallettim eğerki kod sayfanızda querye sql add ile kod eklemişseniz ard arda kayıt ekleme hata veriyor bende başka bir query kullandım sorunum çözüldü
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen Battosai »

pelitt senin yaptığın herşey sakat...rastgele kodlar yazıyorsun çoğunun ne işe yaradığını bilmeden...Bu forumda bu kadar karışık kod örneği gönderen daha görmedim...Birde bir soru sordun mu cevap gelmeden kendi kendine cevaplar vermesen, yani ne sorocağın kararlaştır ondan sonra sor... yok şöyle yaptım, şöyle oldu falan diyerek yeni mesajlarla formda mesaj kalabalığı yapma derim...
Bu eleştirinin altına bir ipucu vereyim sana sorgu gönderirken '''+combobox.text''' şeklinde değilde QuatedStr(comboboxstr) kullan ötekinde eğer comboda veya edit içinde (') karakteri olursa sorgu hata verir...
pelitt
Üye
Mesajlar: 148
Kayıt: 18 May 2009 10:06

Re: Bulunan kayda göre kayıt ekleme?

Mesaj gönderen pelitt »

garuşuh maruşuh sorun çözülüyo işte neydek :) :)
ben bu forumda ilk sen garşıladıydın en sonda sen yolcu edecen heral
neyse selamlar
Cevapla