Mysql Update Hakkında ? (Çözüldü)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
bkantur
Üye
Mesajlar: 47
Kayıt: 23 Kas 2013 04:45
Konum: Balıkesir

Mysql Update Hakkında ? (Çözüldü)

Mesaj gönderen bkantur »

Kod: Tümünü seç

procedure Tform1.yapilacakBTNClick(Sender: TObject);
var
  i:integer;
  state:boolean;
  aboneno:string;
begin
  for i:=1 to sorguGRD.Rowcount-1 do
  begin
    if sorguGRD.GetCheckBoxState(0,i,state) then
    begin
      if state then
      begin
        With aktarQRY do
        begin
          close;
          sql.clear;
          sql.add(' INSERT INTO islemler (islem_turu,makbuz_no,tarih,'+
                  ' abone_no,musteri_adi,geneltoplam )');

          sql.add(' VALUES (:xislem_turu,:xmakbuz_no,:xtarih,'+
                  ' :xabone_no,:xmusteri_adi,:xgeneltoplam )');

          Params.ParamByName('xislem_turu').value         := 'FATURA';
          Params.ParamByName('xmakbuz_no').value         := main.makbuznoED.text;
          Params.ParamByName('xtarih').value                 := main.stabar.panels[0].text;
          Params.ParamByName('xabone_no').asstring       := tesisatno1.text;
          Params.ParamByName('xmusteri_adi').asstring    := aboneED.text;
          Params.ParamByName('xgeneltoplam').value      := faturatoplam;          
          execsql;          
        end;        
      end;
    end;
  end;
  aboneno:= tesisatno1.text;
  With musteriaraQRY do
  begin
    close;
    sql.clear;
    sql.add('select abone_adi, abone_no from musteri_kayit where abone_no=''aboneno''');
    Active:=true;
    Open;
    begin
      if musteriaraQRY.recordcount=0 then begin
      With musterikaydetQRY do
        begin
          close;
          sql.clear;
          sql.add(' INSERT INTO musteri_kayit (xislem_turu,abone_adi,abone_no)');
          sql.add(' VALUES (xislem_turu,:xabone_adi,:xabone_no)');
          Params.ParamByName('xislem_turu').value    := 'FATURA';          
          Params.ParamByName('xabone_adi').value     := aboneED.text;
          Params.ParamByName('xabone_no').value      := aboneno;
          execsql;
        end;
      end
      else if musteriaraQRY.recordcount>0 then begin
      With musterikaydetQRY do
        begin
          close;
          sql.clear;
          sql.add(' UPDATE musteri_kayit Set abone_adi='''+aboneED.text+''' Where abone_no='''+aboneno+''' ');
          execsql;
        end;
      end;
    end;
  end;
end;
Bu kodlardaki hata nerededir ? Müşteri yoksa ekle varsa güncelle kısmım çalışmıyor. Daha doğrusu kayıt varsa bile hep yeni kayıt ekliyor güncelleme yapmıyor :(
En son bkantur tarafından 03 Şub 2015 10:47 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Mysql Update Hakkında ?

Mesaj gönderen brs »

Kayıt varsa güncelleme, yoksa yeni kayıt oluşturur...

Kod: Tümünü seç

procedure TForm8.GuncelleClick(Sender: TObject);
begin
  try
    with Form3.Database do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * From kullanici Where ADI=:BRSA');
      ParamByName('BRSA').AsString := ComboBox1.Text;
      Prepared := True;
      Open;
      if Not IsEmpty then
      begin
        SQL.Clear;
        SQL.Add('Update kullanici Set ADI=:BRSA');
        SQL.Add('Where kullanici =''' + ComboBox1.Text + '''');
        ParamByName('BRSA').AsString := ComboBox1.Text;
        ExecSQL;
        Application.MessageBox
          (PChar(ComboBox1.Text + ' Güncelleme İşlemi Başarıyla Tamamlandı!'),
          'Mesaj', 0);
      end
      else
      begin
        Close;
        SQL.Clear;
        SQL.Add('Insert Into kullanici (ADI)');
        SQL.Add(' Values (:BRSA)');
        ParamByName('BRSA').AsString := ComboBox1.Text;
        ExecSQL;
        Application.MessageBox
          (PChar(ComboBox1.Text + ' Kayıt İşlemi Başarıyla Tamamlandı!'),
          'Mesaj', 0);
      end;
    end;
  except
    Application.MessageBox('İşlem Sırasında Hata Oluştu!', 'Hata',
      MB_Ok or MB_ICONQUESTION);
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
bkantur
Üye
Mesajlar: 47
Kayıt: 23 Kas 2013 04:45
Konum: Balıkesir

Re: Mysql Update Hakkında ?

Mesaj gönderen bkantur »

Cevap için teşekkür ederim. Benim aşağıda kullandığım kodlar normalde çalışıyor ama yukarıdaki kodlar ile kullandığımda hep yeni kayıt ekliyor güncelleme yapmıyor.

Kod: Tümünü seç

With musteriaraQRY do
  begin
    close;
    sql.clear;
    sql.add('select abone_adi, abone_no from musteri_kayit where abone_no=''aboneno''');
    Active:=true;
    Open;
    begin
      if musteriaraQRY.recordcount=0 then begin
      With musterikaydetQRY do
        begin
          close;
          sql.clear;
          sql.add(' INSERT INTO musteri_kayit (xislem_turu,abone_adi,abone_no)');
          sql.add(' VALUES (xislem_turu,:xabone_adi,:xabone_no)');
          Params.ParamByName('xislem_turu').value    := 'FATURA';          
          Params.ParamByName('xabone_adi').value     := aboneED.text;
          Params.ParamByName('xabone_no').value      := aboneno;
          execsql;
        end;
      end
      else if musteriaraQRY.recordcount>0 then begin
      With musterikaydetQRY do
        begin
          close;
          sql.clear;
          sql.add(' UPDATE musteri_kayit Set abone_adi='''+aboneED.text+''' Where abone_no='''+aboneno+''' ');
          execsql;
        end;
      end;
    end;
  end;	
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Mysql Update Hakkında ?

Mesaj gönderen brs »

Bence ilk önce update yok ise kayıt işlemi gerçekleşin...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Mysql Update Hakkında ?

Mesaj gönderen brs »

Birde yanlış anlamaz iseniz ufak eleştiri yapacağım, çok sayıda kodlamada gereksiz aynı şeyler yazılmış örnek (With musterikaydetQRY do) gibi ben sizin için biraz düzenleme yaptım gerisini siz kendinize göre uyarlayın daha sağlıklı olur...

Kod: Tümünü seç

begin
  With LinkDatabase do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select * From musteri_kayit Where abone_adi=:ad');
    ParamByName('ad').AsString := aboneED.Text;
    Prepared := True;
    Open;
    if Not IsEmpty then //kayıt varsa güncelle
    begin
      Close;
      SQL.Clear;
      SQL.Add(' UPDATE musteri_kayit Set abone_adi=''' + aboneED.Text +
        ''' Where abone_no=''' + aboneno + ''' ');
      ExecSQL;
    end
    else
    begin
      Close;
      SQL.Clear;
      SQL.Add(' INSERT INTO musteri_kayit (xislem_turu,abone_adi,abone_no)');
      SQL.Add(' VALUES (xislem_turu,:xabone_adi,:xabone_no)');
      Params.ParamByName('xislem_turu').Value := 'FATURA';
      Params.ParamByName('xabone_adi').Value := aboneED.Text;
      Params.ParamByName('xabone_no').Value := aboneno;
      ExecSQL;
    end;
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
bkantur
Üye
Mesajlar: 47
Kayıt: 23 Kas 2013 04:45
Konum: Balıkesir

Re: Mysql Update Hakkında ?

Mesaj gönderen bkantur »

Estağfurullah neden yanlış anlayayım bilgi konusunda her zaman eleştirilere açığım tavsiyenizi değerlendireceğim bu arada sizin sayenizde yukarıdaki kodun hatasınıda buldum çok teşekkür ederim.

Benim yazdığım kod :

Kod: Tümünü seç

sql.add('select abone_adi, abone_no from musteri_kayit where abone_no=''aboneno''');
Olması gereken :

Kod: Tümünü seç

sql.add('select abone_adi, abone_no from musteri_kayit Where abone_no=''' + aboneno + ''' ');
Cevapla