Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Dbgrid sütun toplamı aldırmak
#11
(17-08-2023, Saat: 10:44)Mesut Adlı Kullanıcıdan Alıntı: sorguyu yazarken
WHERE NAME=   yerine WHERE NAME LIKE kullanmanız gerekmektedir örnek kullanımı aşağı yazıyorum. tabi bu sizin yukarıda yapmış olduğunuz kullanım tarzı benim kullanmakta olduğum tarz değil  yine de size en yakın tarzı göstereyim .
begin
ADOQuery2.Connection:=ADOConnection1;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select * From STOK Where NAME LIKE N'+#39+'%'+Edit1.Text+'%'+#39');
ADOQuery2.Active:=TRUE;
END;

dilerseniz parametrikte yapabilirsiniz karar sizin

Teşekkürler. Peki beni kayıtlarım 10.000 civarı edit1'e bulunacak kelimeyi girmem ve bulması uzun sürdü bunun için ne yapabilirim
Cevapla
#12
O halde procedure kullanmanızı öneririm öncelikle searchData adında bir procedure oluşturup parametrik değer olarak string değer verirsiniz procdure içinde eğer gelen parametre uzunluğu 3 ten fazlaysa arama fonksiyonunu tetiklersiniz böylece hem her karakterde arama yapmaz 3. karakterden sorna aama yapar ve filtremeliş olur  Edit1 keydown özelliğinden de procedure' edit1.text özelliği kullanarak değer gönderirsiniz  stevenskat
(17-08-2023, Saat: 10:44)Mesut Adlı Kullanıcıdan Alıntı: sorguyu yazarken
WHERE NAME=   yerine WHERE NAME LIKE kullanmanız gerekmektedir örnek kullanımı aşağı yazıyorum. tabi bu sizin yukarıda yapmış olduğunuz kullanım tarzı benim kullanmakta olduğum tarz değil  yine de size en yakın tarzı göstereyim .
begin
ADOQuery2.Connection:=ADOConnection1;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select * From STOK Where NAME LIKE N'+#39+'%'+Edit1.Text+'%'+#39');
ADOQuery2.Active:=TRUE;
END;

dilerseniz parametrikte yapabilirsiniz karar sizin

Teşekkürler. Peki beni kayıtlarım 10.000 civarı edit1'e bulunacak kelimeyi girmem ve bulması uzun sürdü bunun için ne yapabilirim

(17-08-2023, Saat: 11:44)stevenskat Adlı Kullanıcıdan Alıntı:
(17-08-2023, Saat: 10:44)Mesut Adlı Kullanıcıdan Alıntı: sorguyu yazarken
WHERE NAME=   yerine WHERE NAME LIKE kullanmanız gerekmektedir örnek kullanımı aşağı yazıyorum. tabi bu sizin yukarıda yapmış olduğunuz kullanım tarzı benim kullanmakta olduğum tarz değil  yine de size en yakın tarzı göstereyim .
begin
ADOQuery2.Connection:=ADOConnection1;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select * From STOK Where NAME LIKE N'+#39+'%'+Edit1.Text+'%'+#39');
ADOQuery2.Active:=TRUE;
END;

dilerseniz parametrikte yapabilirsiniz karar sizin

Teşekkürler. Peki beni kayıtlarım 10.000 civarı edit1'e bulunacak kelimeyi girmem ve bulması uzun sürdü bunun için ne yapabilirim

Tabi yinede size önerim connectionlarınızı datamodule içinde tutun ana form üzerinde olmasın
Cevapla
#13
(17-08-2023, Saat: 12:15)Mesut Adlı Kullanıcıdan Alıntı:
O halde procedure kullanmanızı öneririm öncelikle searchData adında bir procedure oluşturup parametrik değer olarak string değer verirsiniz procdure içinde eğer gelen parametre uzunluğu 3 ten fazlaysa arama fonksiyonunu tetiklersiniz böylece hem her karakterde arama yapmaz 3. karakterden sorna aama yapar ve filtremeliş olur  Edit1 keydown özelliğinden de procedure' edit1.text özelliği kullanarak değer gönderirsiniz  stevenskat

Teşekkürler. Peki beni kayıtlarım 10.000 civarı edit1'e bulunacak kelimeyi girmem ve bulması uzun sürdü bunun için ne yapabilirim

(17-08-2023, Saat: 11:44)stevenskat Adlı Kullanıcıdan Alıntı: Teşekkürler. Peki beni kayıtlarım 10.000 civarı edit1'e bulunacak kelimeyi girmem ve bulması uzun sürdü bunun için ne yapabilirim

Tabi yinede size önerim connectionlarınızı datamodule içinde tutun ana form üzerinde olmasın

Searchdata hata veriyor.
 [Error] Unit1.pas(50): Undeclared identifier: 'searchData'
[Error] Unit1.pas(52): Undeclared identifier: 'SearchWord'

birde +#39+'%'+SearchWord+'%'+#39 buradaki 39 anlamı ne oluyor.
Cevapla
#14
(17-08-2023, Saat: 13:12)stevenskat Adlı Kullanıcıdan Alıntı:
(17-08-2023, Saat: 12:15)Mesut Adlı Kullanıcıdan Alıntı:

Tabi yinede size önerim connectionlarınızı datamodule içinde tutun ana form üzerinde olmasın

Searchdata hata veriyor.
 [Error] Unit1.pas(50): Undeclared identifier: 'searchData'
[Error] Unit1.pas(52): Undeclared identifier: 'SearchWord'

birde +#39+'%'+SearchWord+'%'+#39 buradaki 39 anlamı ne oluyor.

interface kısmına da eklediniz mi  ?

(17-08-2023, Saat: 13:12)stevenskat Adlı Kullanıcıdan Alıntı:
(17-08-2023, Saat: 12:15)Mesut Adlı Kullanıcıdan Alıntı:

Tabi yinede size önerim connectionlarınızı datamodule içinde tutun ana form üzerinde olmasın

Searchdata hata veriyor.
 [Error] Unit1.pas(50): Undeclared identifier: 'searchData'
[Error] Unit1.pas(52): Undeclared identifier: 'SearchWord'

birde +#39+'%'+SearchWord+'%'+#39 buradaki 39 anlamı ne oluyor.

Yuakrıda interface içinde procedurun tanımını da yaplamısınız aşağıdaki şekilde  

procedure searchData(SearchWord:String);
Cevapla
#15
(17-08-2023, Saat: 14:55)Mesut Adlı Kullanıcıdan Alıntı:
(17-08-2023, Saat: 13:12)stevenskat Adlı Kullanıcıdan Alıntı: Searchdata hata veriyor.
 [Error] Unit1.pas(50): Undeclared identifier: 'searchData'
[Error] Unit1.pas(52): Undeclared identifier: 'SearchWord'

birde +#39+'%'+SearchWord+'%'+#39 buradaki 39 anlamı ne oluyor.

interface kısmına da eklediniz mi  ?

(17-08-2023, Saat: 13:12)stevenskat Adlı Kullanıcıdan Alıntı: Searchdata hata veriyor.
 [Error] Unit1.pas(50): Undeclared identifier: 'searchData'
[Error] Unit1.pas(52): Undeclared identifier: 'SearchWord'

birde +#39+'%'+SearchWord+'%'+#39 buradaki 39 anlamı ne oluyor.

Yuakrıda interface içinde procedurun tanımını da yaplamısınız aşağıdaki şekilde  

procedure searchData(SearchWord:String);

Tamamı aşağıda bir kontrol edebilir misin? Nereyi eksik yazmışım. Teşekkürler,

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, ADODB, StdCtrls;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    Label3: TLabel;
    DBGrid2: TDBGrid;
    ADOQuery2: TADOQuery;
    DataSource2: TDataSource;
    ADOConnection2: TADOConnection;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
     procedure TForm1.searchData(SearchWord:String);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
ADOquery1.close;
ADOquery1.sql.clear;
ADOquery1.sql.add('select SUM(CARDTYPE) AS toplam from STOK');


ADOquery1.open;
label3.Caption:=ADOQUERY1.Fields[0].asstring;
label3.Caption:= formatfloat('#.##,',strtofloat(label3.Caption));

   end;

procedure TForm1.searchData(SearchWord:String);
Begin
 if Length(SearchWord)>3 then
 Begin

 ADOQuery2.Connection:=ADOConnection1;
 ADOQuery2.SQL.Clear;
 ADOQuery2.SQL.Add('Select * From STOK Where NAME LIKE N'+#39+'%'+SearchWord+'%'+#39'');
 ADOQuery2.Active:=TRUE;
 End;
     procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
searchData(Edit1.Text);
end;
 End;

end.
Cevapla
#16
(17-08-2023, Saat: 15:07)stevenskat Adlı Kullanıcıdan Alıntı:
(17-08-2023, Saat: 14:55)Mesut Adlı Kullanıcıdan Alıntı: interface kısmına da eklediniz mi  ?


Yuakrıda interface içinde procedurun tanımını da yaplamısınız aşağıdaki şekilde  

procedure searchData(SearchWord:String);

Tamamı aşağıda bir kontrol edebilir misin? Nereyi eksik yazmışım. Teşekkürler,

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, ADODB, StdCtrls;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    Label3: TLabel;
    DBGrid2: TDBGrid;
    ADOQuery2: TADOQuery;
    DataSource2: TDataSource;
    ADOConnection2: TADOConnection;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
     procedure TForm1.searchData(SearchWord:String);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
ADOquery1.close;
ADOquery1.sql.clear;
ADOquery1.sql.add('select SUM(CARDTYPE) AS toplam from STOK');


ADOquery1.open;
label3.Caption:=ADOQUERY1.Fields[0].asstring;
label3.Caption:= formatfloat('#.##,',strtofloat(label3.Caption));

   end;

procedure TForm1.searchData(SearchWord:String);
Begin
 if Length(SearchWord)>3 then
 Begin

 ADOQuery2.Connection:=ADOConnection1;
 ADOQuery2.SQL.Clear;
 ADOQuery2.SQL.Add('Select * From STOK Where NAME LIKE N'+#39+'%'+SearchWord+'%'+#39'');
 ADOQuery2.Active:=TRUE;
 End;
     procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
searchData(Edit1.Text);
end;
 End;

end.

Merhaba Interface kısmına  "procedure TForm1.searchData(SearchWord:String);" bu şekilde form ismi belirterek değil  değil  "procedure searchData(SearchWord:String);" bu şekilde yazmanız gerekiyor prucedure ismi ve propertyleri implementation bölümünde form ismi belirtebilirsiniz
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  DBGrid Detay Gösterilmesi. OZCANK 19 9.601 05-04-2024, Saat: 00:48
Son Yorum: Pimapen_Nuri
  DbGrid'de Seçili Satırların Fast Reportta Raporlanması [ÇÖZÜLDÜ] bünyamin68 4 796 17-12-2023, Saat: 15:08
Son Yorum: bünyamin68
  DBGRID Otomatik Sıra No Alanı [ÇÖZÜLDÜ] bünyamin68 2 454 18-10-2023, Saat: 21:00
Son Yorum: bünyamin68
  DbGrid tüm satırların yüksekliğini ayarlama delphicim 2 406 16-10-2023, Saat: 23:06
Son Yorum: delphicim
  DBGRID yeni sütun ekle veri gir diğer sütundaki veriyi değiştir stevenskat 8 869 08-09-2023, Saat: 22:47
Son Yorum: m_ekici



Konuyu Okuyanlar: 1 Ziyaretçi