![]() |
|
DBGrid de Birden Fazla Kayıt Seçmek. - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: DBGrid de Birden Fazla Kayıt Seçmek. (/showthread.php?tid=6679) Sayfalar:
1
2
|
DBGrid de Birden Fazla Kayıt Seçmek. - OZCANK - 26-03-2022 Arkadaşlar Merhaba ; DBGrid1 e fatura listesini getiriyorum ve bu faturalardan bir kaçını seçmek ve eklemek istiyorum şöyle bir kod uyarladım ama bir türlü FATIRS_NO yu yazdıramadım. Yardımcı olur musunuz? şu şekilde yapmaya çalışıyorum; SELECT * FROM TBLFATUIRS WHERE FATIRS_NO IN ('123','456','789') procedure TForm29.DBGrid1CellClick(Column: TColumn);
var
i,x: Integer;
S: String;
begin
mmo1.Lines.Clear;
mmo1.Lines.Add('SELECT FATIRS_NO FROM TBLFATUIRS WHERE FATIRS_NO IN (');
if dbgrid1.SelectedRows.Count > 0 then
begin
with dbgrid1.DataSource.DataSet do
begin
for i := 0 to dbgrid1.SelectedRows.Count -1 do
begin
S := EmptyStr;
GotoBookmark(Tbookmark(dbgrid1.SelectedRows[i]));
for x := 0 to dbgrid1.Columns.Count - 1 do
begin
S := dbgrid1.Columns[0].Field.AsString;
end;
mmo1.Lines.Add(QuotedStr(S)+',');
end;
end;
end;
if mmo1.Lines.Count > 0 then
begin
S := mmo1.Lines[mmo1.Lines.Count-1];
if S[Length(S)] = ',' then
begin
SetLength(S, Length(S)-1);
mmo1.Lines[mmo1.Lines.Count-1] := S;
end;
end;
mmo1.Lines.Add(')');
end;
DBGrid de Birden Fazla Kayıt Seçmek. - MuhammedYasir - 26-03-2022 if DBGrid1.SelectedRows.Count > 0 then begin with DBGrid1.DataSource.DataSet do begin for i := 0 to DBGrid1.SelectedRows.Count -1 do begin S := EmptyStr; GotoBookmark(Tbookmark(DBGrid1.SelectedRows[i])); S := S + DBGrid1.Columns[0].Field.AsString; memo1.Lines.Add(QuotedStr(S)+','); end; end; end; Aldığım sonuç: SELECT FATIRS_NO FROM TBLFATUIRS WHERE FATIRS_NO IN ( '1', '2', '3' ) Cvp: DBGrid de Birden Fazla Kayıt Seçmek. - OZCANK - 27-03-2022 (26-03-2022, Saat: 18:52)MuhammedYasir Adlı Kullanıcıdan Alıntı:MuhammedYasir kardeşim çok teşekkür ederim. Ben şu şekilde düzenledim ama hep parantez ile kapatıyor.if DBGrid1.SelectedRows.Count > 0 then begin with DBGrid1.DataSource.DataSet do begin for i := 0 to DBGrid1.SelectedRows.Count -1 do begin S := EmptyStr; GotoBookmark(Tbookmark(DBGrid1.SelectedRows[i])); S := S + DBGrid1.Columns[0].Field.AsString; memo1.Lines.Add(QuotedStr(S)+','); end; end; end; '000000000108624' ) '000000000050075' ) '000000000212366' ) '000000000212367' ) '000000000212367' ) '000000000212367' ) Birde aynı kayıt girmesini nasıl engelleyebilirim? Kod şu şekilde; procedure TForm29.DBGrid1DblClick(Sender: TObject);
var
i: Integer;
S: String;
begin
if DBGrid1.SelectedRows.Count > 0 then
begin
with DBGrid1.DataSource.DataSet do
begin
for i := 0 to DBGrid1.SelectedRows.Count -1 do
begin
S := EmptyStr;
GotoBookmark(Tbookmark(DBGrid1.SelectedRows[i]));
S := S + DBGrid1.Columns[0].Field.AsString;
mmo1.Lines.Add(QuotedStr(S)+',');
end;
end;
end;
if mmo1.Lines.Count > 0 then
begin
S := mmo1.Lines[mmo1.Lines.Count-1];
if S[Length(S)] = ',' then
begin
SetLength(S, Length(S)-1);
mmo1.Lines[mmo1.Lines.Count-1] := S;
end;
end;
mmo1.Lines.Add(')');
end;
DBGrid de Birden Fazla Kayıt Seçmek. - COMMANDX - 28-03-2022 Mükerrer Kaydı engellemenin en kısa yolu; if memo1.lines.IndexOf(s) = -1 then Memo1.lines.Add(s); Cvp: DBGrid de Birden Fazla Kayıt Seçmek. - OZCANK - 28-03-2022 (28-03-2022, Saat: 10:19)COMMANDX Adlı Kullanıcıdan Alıntı: Mükerrer Kaydı engellemenin en kısa yolu; COMMANDX Kardeşim mükerreri bu şekilde engellemiyor. DBGrid de Birden Fazla Kayıt Seçmek. - COMMANDX - 28-03-2022 Bende engelliyor. VAR S:STRING; begin S:=EDIT1.TEXT; if memo1.lines.IndexOf(s) = -1 then Memo1.lines.Add(s); end;Ekteki Örneği indirip incelersen... Cvp: DBGrid de Birden Fazla Kayıt Seçmek. - OZCANK - 28-03-2022 (28-03-2022, Saat: 10:55)COMMANDX Adlı Kullanıcıdan Alıntı: Bende engelliyor. Bu kod yapısın da bana yardımcı olabilir misin? Yapmak istediğim ('1','2','3','4') şeklinde procedure TForm29.DBGrid1DblClick(Sender: TObject);
var
i: Integer;
S: String;
begin
if DBGrid1.SelectedRows.Count > 0 then
begin
with DBGrid1.DataSource.DataSet do
begin
for i := 0 to DBGrid1.SelectedRows.Count -1 do
begin
S := EmptyStr;
GotoBookmark(Tbookmark(DBGrid1.SelectedRows[i]));
S := S + DBGrid1.Columns[0].Field.AsString;
mmo1.Lines.Add(QuotedStr(S)+',');
end;
end;
end;
if mmo1.Lines.Count > 0 then
begin
S := mmo1.Lines[mmo1.Lines.Count-1];
if S[Length(S)] = ',' then
begin
SetLength(S, Length(S)-1);
mmo1.Lines[mmo1.Lines.Count-1] := S;
end;
end;
mmo1.Lines.Add(')');
end;
Cvp: DBGrid de Birden Fazla Kayıt Seçmek. - OZCANK - 29-03-2022 Arkadaşlar, DBGrid1 in MultiSelect özelliği ile seçim yapıyorum ve Ctrl + Click ile ekliyor bunu değiştirebilir miyim? Ekle buttonu ile yapabilmem mümkün mü? DBGrid de Birden Fazla Kayıt Seçmek. - COMMANDX - 31-03-2022 Kardeş , form üzerine 1 adet Listbox koy, Alttaki Kodu PopupMenu nesnesine Gride Sağ Tık olarak ekle Seçtiğin Kayıtlar Listbox nesnesine Eklenecek, aynısı varsa eklenmeyecek procedure TFORM1.Ekle1Click(Sender: TObject);
begin
if ListBox1.Items.IndexOf(Query1.fieldbyname('FATIRS_NO').Value) = -1 then BEGIN // Bu kısmı istersen Gride DblClick olarak da ekleyebilirsin
Listbox1.Items.Insert(0,Query1.fieldbyname('FATIRS_NO').Value);
end;
Hiç bir kaydı Listboxa atmadıysan yani listbox boş ise Tüm kayıtların FATIRS_NO larını geitirir. Eğer Listbox dolu ise , Listboxtaki Kayıtları Döngüye sokarak SQL sorgusu Şeklinde sorgular En sonda (b) SQL içinde iki adet Quotedstr var onun görevi, sonda kalan virgülden (a) kurtulmak için sonlandırıcıdır.
var
L:integer;
begin
Query1.Close;
Query1.SQL.Clear;
With Query2 do begin
SQL.Add('SELECT FATIRS_NO FROM TBLFATUIRS ');
IF LISTBOX1.Items.Text <>'' THEN BEGIN
SQL.Add(' WHERE FATIRS_NO IN ( ');
FOR L:= 0 TO LISTBOX1.ItemS.Count-1 DO BEGIN
SQL.Add(' '+QUOTEDSTR(LISTBOX1.Items.Strings[L])+',' ); // (a)
END;
SQL.Add(' '+QUOTEDSTR('')+QUOTEDSTR('')+') AND ' ); // (b)
Query1.Open
END;
Listbox1.clear;
END;
Başka Sorgun Yoksa (b) deki Sorgu içinde olan AND ı silebilirsin
Cvp: DBGrid de Birden Fazla Kayıt Seçmek. - OZCANK - 02-04-2022 (31-03-2022, Saat: 08:35)COMMANDX Adlı Kullanıcıdan Alıntı: Kardeş öncelikle çok teşekkür ederim. Ben bu kodu buraya ekledim ama ListBox1 e doubleclick ile ekleme yapıyor ama tırnak ve virgülleri eklemiyor. |