select * from access表 order by 名字

解决方案 »

  1.   

    我希望的是findfirst('zs'...这样的格式
    只能用索引
      

  2.   

    用adox试一下,(具体方法见'ado/mts/com+'一书)可以修改库结构
      

  3.   

    在foxbase里,我可以用
    index on py(姓名) to aa
    然后
    seek "zs"来查找张三,在access怎么实现呢?
      

  4.   

    我不想添加字段,也不想用select
    因为我一次只想对一个表操作
    我觉得自定义函数索引是很好的功能阿,应该access 中有的啊
      

  5.   

    MSDN 有详细的说明  一、关于COM的一些基本概念。 
      COM对象(COM object)是实现某一特殊功能的二进制代码,包括实现功能的一些方法,这些方法通过COM接口(COM interfaces)被访问。但是你不能直接访问COM接口,你可以通过COM类(COM class)来操作COM接口。 
      二、引用ADOX和JRO。 
      开发平台或客户端需要安装MDAC 2.1数据库引擎,你可以从微软公司http://www.microsoft.com/data下载,也可以在安装IE5.0中选择定制安装“动态数据绑定”选项。 
      在Delphi IDE中选择菜单ProjectImport Type Library,出现Import Type Library对话框,选择“Microsoft ADO Ext. 2.x for DDL and Security”,将Class Name中TTable改为TADOXTable(因为TTable组件在Delphi中已经存在并注册);选择“Microsof Jet and Replication Object 2.x Library”。然后单击“Install”安装,便在Delphi的Imports目录下生成ADOX_TLB.pas和JRO_TLB.pas两个文件。在Unit文件的Uses中加入ComObj、ADOX_TLB、JRO_TLB,就可以通过COM操作ADOX和JRO对象了。 
      打开ADOX_TLB.Pas文件,可以看到定义的接口有_Catalog、_Table、_Index等。   procedure TForm1.btnCreateDBClick(Sender:TObject); 
      var 
      Catalog:_Catalog;//定义为_Catalog的接口类型 
      Table:_Table; 
      Index:_Index; 
      strCon:string;//定义连接字符串 
      begin 
      Catalog:=CreateComObject(Class-Catalog) as _Catalog; 
      //建立Catalog实例,也可以用 Catalog:=CoCatalog.Create; 
      strCon:="Provider=Microsoft.Jet.OleDB.4.0;" 
      //通过Jet OleDb直接操作Access数据库 
      +"Data Source=d:ComTestmyDb.mdb;" 
      //数据库位置 
      +"Jet OLEDB:Engine Type=5;" 
      //Jet 4.x格式,如为4,则Jet 3.x格式 
      +"Locale Identifier=0x0804;" 
       //支持简体中文(一定要有) 
      +"Jet OLEDB:Database Password=mypwd"; 
      //加入密码 
      Catalog.Create(strCon); //建立数据库 
      {建立数据表和索引} 
      catalog._Set_ActiveConnection(strCon); 
      //连接到数据库 
      with Catalog do 
      begin //建立数据表 
      Table:=Create Com Object(Class-Table) as _Table; //建立Table实例 
      with Table do 
      begin 
      Name:="Tel"; 
      Columns.Append("Name",adVarWChar,8); 
      //数据类型详见MDAC SDK 
      Columns.Append("Phone",adVarWchar,20); 
      Index:=CreateComObject(Class_Index) as _Index; //建立索引 
      with Index do 
      begin 
      Name:="MyIndex"; 
      Columns.Append("Name",adVarWchar,8); 
      end; 
      Indexes.Append(Index,EmptyParam); 
      end; 
      Tables.Append(Table); 
      end; 
      end; 
      

  6.   

    neweb(永不言败) ,谢了,不过你这个还是标准索引,我希望建立一个变换了的索引,比如:姓名字段有一个记录值为张三,索引里被变换为它的拼音zs
    然后我用findfirst('zs',....)就可以找到它了,有没有办法解决呢?
      

  7.   

    这里的一段程序:
    unit MainFrm;interfaceuses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;type
    TMainForm = class(TForm)
    ChineseEdt: TEdit;
    PYEdt: TEdit;
    btnConvert: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure btnConvertClick(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;var
    MainForm: TMainForm;implementation{$R *.DFM}// 获取指定汉字的拼音索引字母,如:“汉”的索引字母是“H”
    function GetPYIndexChar( hzchar:string):char;
    begin
    case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
    $B0A1..$B0C4 : result := "A";
    $B0C5..$B2C0 : result := "B";
    $B2C1..$B4ED : result := "C";
    $B4EE..$B6E9 : result := "D";
    $B6EA..$B7A1 : result := "E";
    $B7A2..$B8C0 : result := "F";
    $B8C1..$B9FD : result := "G";
    $B9FE..$BBF6 : result := "H";
    $BBF7..$BFA5 : result := "J";
    $BFA6..$C0AB : result := "K";
    $C0AC..$C2E7 : result := "L";
    $C2E8..$C4C2 : result := "M";
    $C4C3..$C5B5 : result := "N";
    $C5B6..$C5BD : result := "O";
    $C5BE..$C6D9 : result := "P";
    $C6DA..$C8BA : result := "Q";
    $C8BB..$C8F5 : result := "R";
    $C8F6..$CBF9 : result := "S";
    $CBFA..$CDD9 : result := "T";
    $CDDA..$CEF3 : result := "W";
    $CEF4..$D188 : result := "X";
    $D1B9..$D4D0 : result := "Y";
    $D4D1..$D7F9 : result := "Z";
    else
    result := char(32);
    end;
    end;procedure TMainForm.btnConvertClick(Sender: TObject);
    var
    I: Integer;
    PY: string;
    s: string;
    begin
    s := " ;
    I := 1;
    while I <= Length(ChineseEdt.Text) do
    begin
    PY := Copy(ChineseEdt.Text, I , 1);
    if PY >= Chr(128) then
    begin
    Inc(I);
    PY := PY + Copy(ChineseEdt.Text, I , 1);
    s := s + GetPYIndexChar(PY);
    end
    else
    s := s + PY;
    Inc(I);
    end;
    PYEdt.Text := s;
    end;end.
    不过不能将多音字辨别
      

  8.   

    可以请数据库组的 弱水三千 和 Guo 过来看看