我建立了一个数据库,插入数据后,只要连接数据库,就出现:Translate Error.Value out of bounds.尝试转换源字段中因语法错误而停止的数据。编译根本无法通过数据表如下:/* Table:Publishbook, 用于记录出版社发印情况 */
CREATE TABLE PublishBook 
       (Dep_Name    NVarchar(30) NOT NULL,
        Book_Name   NVarchar(30) NOT NULL,
        Worksheet   NVarchar(30) NOT NULL,
        Send_Com    NVarchar(30) ,
        Send_Amount INTEGER  ,
        End_Date    NVarchar(30),
        Add_Com     NVarchar(30),
        Add_Amount  INTEGER  ,
        Add_Date    NVarchar(30)
       );
GO
插入数据如下:
Insert Into Publishbook(Dep_Name,Book_Name,Worksheet,Send_Com,Send_Amount,End_Date,Add_Com,Add_Amount,
Add_Date)
Values(N'广东教育出版社',N'思想品德十一册',N'04Q612',N'省新华书店',N'3000',N'2004-06-25',null,null,null)
GOInsert Into Publishbook(Dep_Name,Book_Name,Worksheet,Send_Com,Send_Amount,End_Date,Add_Com,Add_Amount,
Add_Date)
Values(N'广东教育出版社',N'思想品德第七册',N'04Q625',N'省新华书店',N'4000',N'2004-06-25',null,null,null)
GOInsert Into Publishbook(Dep_Name,Book_Name,Worksheet,Send_Com,Send_Amount,End_Date,Add_Com,Add_Amount,
Add_Date)
Values(N'广东人民出版社',N'开心学英语教学挂图3',N'A2003358',N'教育书店',N'1900',N'2004-08-06',null,null,null)
GO但是当我把所有数据删除,再重新编译,就可以通过,但是在任意执行一个查询时,会出现错误,假设我查询思想品德,出现错误如下:
 “思想品德”is not a valid floating poing value;我真是想不懂啊,照这种情况应该是数据库有问题,但是在数据库中,可以执行查询,插入等所有的操作呢。
在Delphi中,我用的是Datamodule窗体,AdoConnection,Adodataset,Database,TTable,Tdataset来进行数据库连接的。在应用窗口中用Checkbox来查询数据的,代码如下:if CB_All.checked then         //查询书名
      begin
       FilterStr:='Book_Name='''+i_AllName.Text+'''' ;
       i_AllWorksheet.Clear;
       end;
                 if CB_Allsheet.Checked  then   //查询工号
                  begin
                  FilterStr:='Worksheet='''+i_AllWorksheet.Text+'''';
                  i_AllName.Clear;
                  end;         if length(FilterStr)>0 then
         begin
         Filter:=FilterStr;
         Filtered:=True;
         end
        else
          Filtered:=False;
        Open;
哪位帮我看看啊,急死我了,校长有空就问我:编好没有呀

解决方案 »

  1.   

    Values(N'广东教育出版社',N'思想品德十一册',N'04Q612',N'省新华书店',N'3000',N'2004-06-25',null,null,null)中的N是什么意思呀?好像没用
      

  2.   

    你单步运行看看到底在哪句出的错,
    还有Values(N'广东人民出版社',N'开心学英语教学挂图3',N'A2003358',N'教育书店',N'1900',N'2004-08-06',null,null,null)
    GO改成Values(N'广东人民出版社',N'开心学英语教学挂图3',N'A2003358',N'教育书店',N'1900',N'2004-08-06',nil,nil,nil)
    GO试试。
      

  3.   

    //数据库没问题。应该是你的代码有问题,不要用filter过滤。直接写Sql语句加where条件
    with ADOQuery1 do 
    begin
      Close;
      Sql.Clear;
      Sql.Add('select * from Publishbook where 1=1');
      if CheckBox1.Checked then 
       Sql.Add('and WorkSheet='+QuotedStr(i_AllWorksheet.Text));
      if CheckBox2.Checked then 
       Sql.Add......
      Open;
    end;
      

  4.   

    1.Dep_Name    NVarchar(30) NOT NULL,
    库结构字段类型 nvarchar(30) 改为varchar(30) sqlserver自动分配空间
    2.“思想品德”is not a valid floating poing value;Book_Name   NVarchar(30) NOT NULL是字符串类型的如果类似asfloat的一类操作就是上面的错3.
    Insert Into Publishbook(Dep_Name,Book_Name,Worksheet,Send_Com,Send_Amount,End_Date,Add_Com,Add_Amount,
    Add_Date)
    Values(N'广东教育出版社',N'思想品德十一册',N'04Q612',N'省新华书店',N'3000',N'2004-06-25',null,null,null)
    不必加N
      

  5.   

    nchar 和 nvarchar
    nchar 是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集。nchar(n)包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-92 中的同义词为 national char 和 national character。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。
      

  6.   

    qizhanfeng(glacier):说的不对
    你的库设计的没问题,应该是程序代码的问题,很可能是filter的问题,建议用sql
      

  7.   

    楼上的对
    包含 Transact-SQL 语句或批处理的 Unicode 字符串,stmt 必须是可以隐式转换为 ntext 的 Unicode 常量或变量。不允许使用更复杂的 Unicode 表达式(例如使用 + 运算符串联两个字符串)。不允许使用字符常量。如果指定常量,则必须使用 N 作为前缀。例如,Unicode 常量 N'sp_who' 是有效的
      

  8.   

    应该是数据字段不匹配问题,
    在TSQL里执行事件查看器,输入的插入指令里的数据无论整数,字符都可以以字符形式插入
    如: 1 与 '1' 是一样的,都可以插入的,
    但是在DELPHI程序里就不行了,要注意它
      

  9.   

    你插入的数据有问题。
    就如楼上所说
    Send_Amount INTEGER  ,你插的是'3000',在查询分析器可以执行
      

  10.   

    谢谢各位的热心帮助呢,我改成这样插入数据了,但是连接数据库时还是出现:Translate Error.Value out of bounds.尝试转换源字段中因语法错误而停止的数据。
    Insert Into Publishbook(Dep_Name,Book_Name,Worksheet,Send_Com,Send_Amount,End_Date,Add_Com,Add_Amount,
    Add_Date)
    Values('广东教育出版社','思想品德十一册','04Q612','省新华书店',3000,'2004-06-25',null,null,null)
    GOInsert Into Publishbook(Dep_Name,Book_Name,Worksheet,Send_Com,Send_Amount,End_Date,Add_Com,Add_Amount,
    Add_Date)
    Values('广东教育出版社','思想品德第七册','04Q625','省新华书店',4000,'2004-06-25',null,null,null)
    GOInsert Into Publishbook(Dep_Name,Book_Name,Worksheet,Send_Com,Send_Amount,End_Date,Add_Com,Add_Amount,
    Add_Date)
    Values('广东人民出版社','开心学英语教学挂图3','A2003358','教育书店',1900,'2004-08-06',null,null,null)
    GO
      

  11.   

    我用的是ADO来连接数据库的,其属性设置如下:unit DataModule;interface//uses
    //  SysUtils, Classes, DB, DBTables;uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, ADODB;type
      TDataModule1 = class(TDataModule)
        Database: TDatabase;
        T_Publishbook: TTable;
        DS_Publishbook: TDataSource;
        T_Receivebook: TTable;
        DS_Receivebook: TDataSource;
        T_Sendbook: TTable;
        DS_Sendbook: TDataSource;
        T_Allbook: TTable;
        DS_Allbook: TDataSource;
        ADOConnection1: TADOConnection;
        ADODataSet1: TADODataSet;
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      DataModule1: TDataModule1;implementation{$R *.dfm}end
      

  12.   

    Database: TDatabase;
        T_Publishbook: TTable;
        T_Receivebook: TTable;
        T_Sendbook: TTable;
    这些不是ADO的。以下的才是
    ADOConnection1: TADOConnection;
        ADODataSet1: TADODataSet;
      

  13.   

    把你的SQL在查询分析器执行通过了在些在代码行那里吧,
    你的基础的东西需要学习
      

  14.   

    TO:rockswj(石头,我要学Sql) 难道要用ADOTable,Adodataset才可以吗?那需要用到database控件吗?
     zdq801104(我很笨,但是我不傻!) 
    呵呵,我是刚学的,没有办法,校长要我编写这个系统呢。连接数据库需要代码的吗,不是用控件就可以了吗?我在书上没有看到需要代码连接的呢。 我的sql语句在查询分析器中已经通过了呀,就是说我的数据库已经完整了。
      

  15.   

    用ADO是不用Tdatabase连接的。而是用TADOConnection
    你应该看一下书了。
      

  16.   

    但是我没有看见过用sql server 做数据库的书呢,要不你教教我吧。我重新做了一个,你看看行不行:object DataModule2: TDataModule2
      OldCreateOrder = False
      Left = 246
      Top = 99
      Height = 494
      Width = 469
      object ADOConnection1: TADOConnection
        Connected = True
        ConnectionString = 
          'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initi' +
          'al Catalog=BookStore'
        Provider = 'SQLOLEDB.1'
        Left = 72
        Top = 40
      end
      object ADODataSet1: TADODataSet
        Connection = ADOConnection1
        Parameters = <>
        Left = 152
        Top = 40
      end
      object T_Allbook: TADOTable
        Connection = ADOConnection1
        TableName = 'AllBook'
        Left = 72
        Top = 112
      end
      object DS_Allbook: TDataSource
        DataSet = T_Allbook
        Left = 152
        Top = 112
      end
      object DS_Receivebook: TDataSource
        DataSet = T_Receivebook
        Left = 160
        Top = 184
      end
      object DS_Sendbook: TDataSource
        DataSet = T_Sendbook
        Left = 160
        Top = 256
      end
      object DS_Publishbook: TDataSource
        DataSet = T_Publishbook
        Left = 160
        Top = 336
      end
      object T_Receivebook: TADOTable
        Left = 72
        Top = 184
      end
      object T_Sendbook: TADOTable
        Left = 72
        Top = 256
      end
      object T_Publishbook: TADOTable
        Left = 80
        Top = 336
      end
    end可当Datagrid调用Dataset的时候,出现错误:missing connection or missing connection string.
      

  17.   

    object T_Allbook: TADOTable
        Connection = ADOConnection1
        TableName = 'AllBook'
        Left = 72
        Top = 112
      end
    object T_Publishbook: TADOTable
        Left = 80
        Top = 336
      end
    第一个知道Connection = ADOConnection1怎么第二个就没有了??
    TADOTable,TAdOQuery等可以通过指定Connection属性来通过TADOCOnnection到数据库的。
      

  18.   

    去踢校长两脚,骂他:“想逼人命呀?”,shixilaoshi(初学编程的小女孩) ,我发成品的例子给你吧,你这样学是没有用的
      

  19.   

    两位大哥,我把原来的Datamodule删除了,重新建立了一个,为什么编译的时候出现:[Fatal Error] BookStore.dpr(14): File not found: 'DataModule.dcu'是否那个窗口还在哪里留下了痕迹呢?
      

  20.   

    晕呀。。你是删除文件就行的。应该Project菜单下的Remove from project
    我的msn:[email protected]
      

  21.   

    我的msn是:[email protected],要资料就来