![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запрос с группировкой по 1 символу [D5, dBase, FoxPro]
Ditrix © (2002-10-09 11:52:00)Господа, Мастера!
Подскажите идею, плиз, как организовать запрос с хитрой группировкой
Нужно сгруппировать не по полю, а по первому символу (всех на "А" на "B"...
Заранее спасибо!
Veles (2002-10-10 15:32:00) [1]Может пригодиться...
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, DB, DBTables, Tabs, Grids, DBGrids, TabNotBk, StdCtrls,
ExtCtrls, Buttons, Mask, DBCtrls;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
TabSet1: TTabSet;
DataSource1: TDataSource;
Button1: TButton;
Memo1: TMemo;
Query1: TQuery;
Query1N1: TStringField;
Query1N2: TStringField;
Query1N3: TStringField;
Query1N4: TStringField;
Query1N5: TStringField;
Query1N6: TStringField;
Query1N7: TStringField;
Label1: TLabel;
Image1: TImage;
Table1: TTable;
DataSource2: TDataSource;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
DBEdit1: TDBEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
Memo2: TMemo;
procedure FormCreate(Sender: TObject);
procedure TabSet1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
VAR
i: Byte;
begin
Query1.Close;
Memo1.Lines.Add("select * from Phone where N1 like "А%"");
for i := 1 to 31 do
TabSet1.Tabs.Add(Chr(Byte("А") + i));
Query1.SQL := Memo1.Lines;
Query1.Open;
Label1.Caption := " На букву А" + " обнаружено " +
IntToStr(Query1.RecordCount) + " записей ";
end;
procedure TForm1.TabSet1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
begin
Memo1.Clear;
with Query1 do begin
Close;
Memo1.Lines.Add("select * from Phone where N1 like "" +
TabSet1.Tabs.Strings[NewTab] + "%"");
SQL := Memo1.Lines;
Open;
Label1.Caption := " На букву " + TabSet1.Tabs.Strings[NewTab] +
" обнаружено " + IntToStr(Query1.RecordCount) + " записей ";
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Table1.Append;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Table1.Post;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Table1.Delete;
end;
end.
Darlock (2002-10-09 15:17:00) [2]2Ditrix
Что значит "у мменя БДЕ"? Под какую СУБД тебе надо? Или это общий вариант должен быть?
Ditrix (2002-10-09 15:04:00) [3]Браво MSSQL, но пока мимо, у меня BDE
as char интересно, но с лету не получается. В любом случае придеться попариться, это уже ясно.
Max Zyuzin (2002-10-09 13:08:00) [4]Может что то вроде
select distinct cast(myfield as char[1]) from mytable
В общем это не совсем групировка... но можно попробовать "танцевать" от сюда.
ЮЮ (2002-10-09 12:51:00) [5]Тогда добро пожаловать в стан любителей Microsoft:
MSSQL:
SELECT Count(*) from Personnel Group by Substring(Last_Name,1,1)
ACCESS:
SELECT count(*) from Тур Group by Left(Наименование,1)
Ditrix (2002-10-09 12:39:00) [6]Ясненько! Хотелось бы одним махом, и рыбку съесть и ...
Johnmen (2002-10-09 12:16:00) [7]Разве что создать еще одно поле, где будет храниться первый символ другого симв.поля...