veritabanında kayıt düzenleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 101
- Kayıt: 13 Şub 2015 09:32
veritabanında kayıt düzenleme
veritabanında kayıtlı bilgiler- dbgride geliyor. dbgridte seçili olan satırda 11tane hücre 11 tane edit nesnesine aktarılıyor bunda bir sıkıntı yok.
edit nesnelerinde gerekli düzenlemeler yapıldıktan sonra kayıt edildiği zaman nedense yeni bir kayıtmış gibi algılıyor ve veritabanına yenisi kayıt ediliyor.benim istediğim yeni kayıt etmesin seçili olan satır üzerinde düzenlemeler yapsın ?
edit nesnelerinde gerekli düzenlemeler yapıldıktan sonra kayıt edildiği zaman nedense yeni bir kayıtmış gibi algılıyor ve veritabanına yenisi kayıt ediliyor.benim istediğim yeni kayıt etmesin seçili olan satır üzerinde düzenlemeler yapsın ?
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: veritabanında kayıt düzenleme
dbedit nesnelerini kullan datasourcelarını dbgrid ile aynı yap ekstra bir kod yazmana gerek yok.
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
-
- Üye
- Mesajlar: 101
- Kayıt: 13 Şub 2015 09:32
Re: veritabanında kayıt düzenleme
sedit kullanıldı değişiklik yapmam zor
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: veritabanında kayıt düzenleme
aktarma kodunu kayıt etme kodunu at bir bakalım.
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
-
- Üye
- Mesajlar: 101
- Kayıt: 13 Şub 2015 09:32
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: veritabanında kayıt düzenleme
kodunu inceledim neresinden başlasam bilemedim 
ama kısaca şöyle sölim
1-o a_kayno alanını da gridte görünmez bir alana alacan
2-speedbutton7'de yaptığın atamayı kayno içinde yine görünmez bir edite atacan
3-insert yaptığın kodun başına if kayno in benimtablo then update else insert şekline dönüştürcen.
bu bilgi sana yeter mi bilemiyorum.umudunu kırmak istemem ama kafan fena halde karışmış arkadaşım.

ama kısaca şöyle sölim
1-o a_kayno alanını da gridte görünmez bir alana alacan
2-speedbutton7'de yaptığın atamayı kayno içinde yine görünmez bir edite atacan
3-insert yaptığın kodun başına if kayno in benimtablo then update else insert şekline dönüştürcen.
bu bilgi sana yeter mi bilemiyorum.umudunu kırmak istemem ama kafan fena halde karışmış arkadaşım.
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
Re: veritabanında kayıt düzenleme
Bence sorununuz veritabanını edit mod ayarına almamaktan kaynaklı. Eğer seçtiğini bir bilgide değişiklik yapıp kaydetmek istiyorsanız veritabanını edit moda almalısınız. Siz ekleme moduna yani append moda alıp kaydediyorsunuz sanırım. Uygulamanızı indirip incelemek istedim fakat uygulamanız virüs uyarısı verdi bu yüzden bakamadım.
-
- Üye
- Mesajlar: 101
- Kayıt: 13 Şub 2015 09:32
Re: veritabanında kayıt düzenleme
bi yanlışınız var uygulamayı yükledikten sonra indirdim hiç bir sıkıntısı yok
Re: veritabanında kayıt düzenleme
Merhaba.
- Peşin peşin söylüyorum, kodda hata var vs. kabul etmiyorum.
- Bende SEdit bileşeni olmadığı için deneme şansım yok, şöyle gözle temsili bakabiliyorum.
- Kodu inceleyip anlamaya çalış. Yeterince açıklama ekledim. Neyi neden nasıl yaklaşımda bulunulması gerektiğini detayıca yazdım.
- Mantık hatası olabilir, onları kendi kod süzgecinden geçirip düzeltirsin böylece daha derinleşebilir kodlara anlam kazandırmış olursun.
Şimdi olaya gelelim :
- SpeedButton7 senin Kaydı EDIT etmek butonu değil mi ? Bunun TAG değerini, bu butona tıklandığında temsili bir rakama dönüştür. Mesela 0 olan TAG değeri yerine A_KayNo değerini ver. Bu sana ileride bir kaydı edit etmek üzere gösterdiğini ifade edecek.
- Kayıt alanlarına gerekli değişikliği yaptıktan sonra KAYDET butonuna basıyorsun ya, işte orada bu TAG değerinin (0) olup olmadığını kontrol edeceksin. Eğer (0) SIFIR ise normal yeni kayıt ekleme işlemi yapacaksın. Yok bu değer (0'dan büyük ise) o zaman kullanıcı bir kaydı seçmiş olduğunu ve bu değerin bir Kayıt ID değeri olduğunu, EDIT veya Kayıt Güncelle o butona sen ne diyorsan basılmış demektir. INSERT INTO kullanmayı bırakıp UPDATE içeren ilgili kaydı düzeltecek SQL'i çalıştıracaksın. Bu da basit bir CASE veya IF bloğuna bakar.
- Peşin peşin söylüyorum, kodda hata var vs. kabul etmiyorum.
- Bende SEdit bileşeni olmadığı için deneme şansım yok, şöyle gözle temsili bakabiliyorum.
- Kodu inceleyip anlamaya çalış. Yeterince açıklama ekledim. Neyi neden nasıl yaklaşımda bulunulması gerektiğini detayıca yazdım.
- Mantık hatası olabilir, onları kendi kod süzgecinden geçirip düzeltirsin böylece daha derinleşebilir kodlara anlam kazandırmış olursun.
Şimdi olaya gelelim :
- SpeedButton7 senin Kaydı EDIT etmek butonu değil mi ? Bunun TAG değerini, bu butona tıklandığında temsili bir rakama dönüştür. Mesela 0 olan TAG değeri yerine A_KayNo değerini ver. Bu sana ileride bir kaydı edit etmek üzere gösterdiğini ifade edecek.
Kod: Tümünü seç
SpeedButton7.Tag := DBGrid1.DataSource.DataSet.FieldByName('A_KayNo').AsInteger;
Kod: Tümünü seç
procedure TForm1.SpeedButton5Click(Sender: TObject);
var
Bilgi : tBelgeBilgi;
strDataKlasor : String;
iSonKayıt : Integer;
begin
if ( Trim( sEdit1.Text ) = '' ) AND ( Trim( sEdit2.Text ) = '' ) AND ( Trim( sEdit3.Text ) = '' ) AND ( Trim( sEdit4.Text ) = '' ) AND ( Trim( sEdit5.Text ) = '' ) AND ( Trim( sEdit6.Text ) = '' ) AND ( Trim( sEdit7.Text ) = '' ) AND ( Trim( sEdit8.Text ) = '' ) AND ( Trim( sEdit9.Text ) = '' ) AND ( Trim( sEdit10.Text ) = '' ) AND ( Trim( sEdit11.Text ) = '' )then
begin
MessageDlg('Kayıt ekleme için bir bilgi girişi yapmanız girmelisiniz...', mtWarning, [mbOk], 0);
EXIT;
end;
if ( NOT FileExists( label1.Caption) )
then
if ( MessageDlg( 'Belge seçmemişsiniz, devam edelim mi ?', mtConfirmation, [mbNo, mbYes], 0 )= mrNo )
then Exit;
if not fileexists (label1.Caption)
then image1.Picture.Graphic := Nil;
if SpeedButton7.Tag > 0 then //Bayrağımız Edit Mode olduğunu söylüyor.
begin
iSonKayıt := SpeedButton7.Tag; // Kayıt nomuzu depo ettik...
// İşi biten SpeedButton7.Tag için bayrağımızı eski normal haline döndürüyoruz...
SpeedButton7.Tag := 0;
With TAdoQuery.Create(nil) do
begin
Connection := ADOConnection1;
SQL.Clear;
SQL.Add( 'UPDATE ArsivTablo SET' );
SQL.Add( ' DosyaNo = :DosyaNo');
SQL.Add( ' , SicilNo = :SicilNo');
SQL.Add( ' , AdiSoyadi = :AdiSoyadi');
SQL.Add( ' , TcKimlik = :TcKimlik');
SQL.Add( ' , Telefon = :Telefon');
SQL.Add( ' , isyeriMevkii = :isyeriMevkii');
SQL.Add( ' , isyeriNo = :isyeriNo');
SQL.Add( ' , Metrekaresi = :Metrekaresi');
SQL.Add( ' , KiraBedeli = :KiraBedeli');
SQL.Add( ' , BaslaTar = :BaslaTar');
SQL.Add( ' , BitisTar = :BitisTar');
SQL.Add('WHERE A_KayNo = :A_KayNo');
Parameters.ParamByName('DosyaNo').Value := sEdit1.Text;
Parameters.ParamByName('SicilNo').Value := sEdit2.Text;
Parameters.ParamByName('AdiSoyadi').Value := sEdit3.Text;
Parameters.ParamByName('TcKimlik').Value := sEdit4.Text;
Parameters.ParamByName('Telefon').Value := sEdit5.Text;
Parameters.ParamByName('isyeriMevkii').Value := sEdit6.Text;
Parameters.ParamByName('isyeriNo').Value := sEdit7.Text;
Parameters.ParamByName('Metrekaresi').Value := sEdit8.Text;
Parameters.ParamByName('KiraBedeli').Value := sEdit9.Text;
Parameters.ParamByName('BaslaTar').Value := sEdit10.Text;
Parameters.ParamByName('BitisTar').Value := sEdit11.Text;
Parameters.ParamByName('A_KayNo').Value := iSonKayıt;
ExecSQL;
if FileExists( Label1.Caption ) then
begin // Belge varsa kaydını yapıcaz....
strDataKlasor := ExtractFilePath(Application.Exename) + 'DATA\';
Bilgi := BelgeSakla( iSonKayıt, label1.Caption, strDataKlasor );
if Bilgi.boolIslemTamam then
begin // belgeyi DATA klasörüne alma ve ismi değiştirme işlemi başarılı...
SQL.Clear;
SQL.Add( 'UPDATE ArsivTablo SET' );
SQL.Add( 'A_BelgeAdi = :A_BelgeAdi, A_BelgeTip = :A_BelgeTip' );
SQL.Add( 'WHERE A_KayNo = :A_KayNO ');
Parameters.ParamByName('A_BelgeAdi').Value := Bilgi.strBelgeYeniAdi;
Parameters.ParamByName('A_BelgeTip').Value := Bilgi.strBelgeTipi;
Parameters.ParamByName('A_KayNo').Value := iSonKayıt;
ExecSQL;
end;
end; // if file exists
Free;
end; // With TAdoQuery.Create(nil)
end // TAG > 0 ise yani Edit Mode ise...
else
begin //Bayrağımız Yeni Kayıt Ekleme Modu olduğunu söylüyor.
// Önce belge kaydı oluşturuyoruz...
With TAdoQuery.Create(nil) do
begin
Connection := ADOConnection1;
SQL.Clear;
SQL.Add( 'INSERT INTO ArsivTablo' );
SQL.Add( '( DosyaNo, SicilNo, AdiSoyadi, TcKimlik, Telefon, isyeriMevkii, isyeriNo, Metrekaresi, KiraBedeli, BaslaTar, BitisTar, A_BelgeAdi, A_BelgeTip )' );
SQL.Add(' VALUES ');
SQL.Add( '( :DosyaNo, :SicilNo, :AdiSoyadi, :TcKimlik, :Telefon, :isyeriMevkii, :isyeriNo, :Metrekaresi, :KiraBedeli, :BaslaTar, :BitisTar, :A_BelgeAdi, :A_BelgeTip )' );
Parameters.ParamByName('DosyaNo').Value := sEdit1.Text;
Parameters.ParamByName('SicilNo').Value := sEdit2.Text;
Parameters.ParamByName('AdiSoyadi').Value := sEdit3.Text;
Parameters.ParamByName('TcKimlik').Value := sEdit4.Text;
Parameters.ParamByName('Telefon').Value := sEdit5.Text;
Parameters.ParamByName('isyeriMevkii').Value := sEdit6.Text;
Parameters.ParamByName('isyeriNo').Value := sEdit7.Text;
Parameters.ParamByName('Metrekaresi').Value := sEdit8.Text;
Parameters.ParamByName('KiraBedeli').Value := sEdit9.Text;
Parameters.ParamByName('BaslaTar').Value := sEdit10.Text;
Parameters.ParamByName('BitisTar').Value := sEdit11.Text;
Parameters.ParamByName('A_BelgeAdi').Value := Null;
Parameters.ParamByName('A_BelgeTip').Value := Null;
ExecSQL;
// Şimdi bu kayıt için verilen otomatik numarayı alıcaz...
SQL.Clear; // Ters sırada en üstteki ilk kayıt girilen son kayıttır.
SQL.Add( 'SELECT TOP 1 A_KayNo FROM ArsivTablo ORDER BY A_KayNo DESC' );
Active := True;
iSonKayıt := FieldByName('A_KayNo').AsInteger;
Active := False;
if FileExists( Label1.Caption ) then
begin // Belge varsa kaydını yapıcaz....
strDataKlasor := ExtractFilePath(Application.Exename) + 'DATA\';
Bilgi := BelgeSakla( iSonKayıt, label1.Caption, strDataKlasor );
if Bilgi.boolIslemTamam then
begin // belgeyi DATA klasörüne alma ve ismi değiştirme işlemi başarılı...
SQL.Clear;
SQL.Add( 'UPDATE ArsivTablo SET' );
SQL.Add( 'A_BelgeAdi = :A_BelgeAdi, A_BelgeTip = :A_BelgeTip' );
SQL.Add( 'WHERE A_KayNo = :A_KayNO ');
Parameters.ParamByName('A_BelgeAdi').Value := Bilgi.strBelgeYeniAdi;
Parameters.ParamByName('A_BelgeTip').Value := Bilgi.strBelgeTipi;
Parameters.ParamByName('A_KayNo').Value := iSonKayıt;
ExecSQL;
end;
end; // if file exists
Free;
end; // With TAdoQuery.Create(nil)
end; // TAG 0 ise
ADOQuery1.Active := False;
Sleep(1);
Application.ProcessMessages;
ADOQuery1.Active := True;
// En son girilen kayda otomatik konumlanıyoruz ki kullanıcı sonucu görsün...
ADOQuery1.Locate( 'A_KayNo', iSonKayıt, [] );
end;
-
- Üye
- Mesajlar: 101
- Kayıt: 13 Şub 2015 09:32
Re: veritabanında kayıt düzenleme
abi tek bişey soracam.
speedbutton7 nin tag değeri nereye yazacağız oarayı söyle ben hallederim
speedbutton7 nin tag değeri nereye yazacağız oarayı söyle ben hallederim