dm_main.qry_local_ypml_insert.Parameters.ParamByName('UNIQUE_KEY').Value := GlobVar.qhdm;
          dm_main.qry_local_ypml_insert.Parameters.ParamByName('DM').Value := DM_Main.qry_server_ypml.FieldbyName('DM').Value;
          dm_main.qry_local_ypml_insert.Parameters.ParamByName('CODE_PARENT').Value := DM_Main.qry_server_ypml.FieldbyName('CODE_PARENT').value;
          dm_main.qry_local_ypml_insert.Parameters.ParamByName('BH').Value := DM_Main.qry_server_ypml.FieldbyName('BH').Value;
          dm_main.qry_local_ypml_insert.Parameters.ParamByName('BM').Value := DM_Main.qry_server_ypml.FieldbyName('BM').value;
          dm_main.qry_local_ypml_insert.Parameters.ParamByName('MC1').Value := DM_Main.qry_server_ypml.FieldbyName('MC1').value;
          dm_main.qry_local_ypml_insert.Parameters.ParamByName('MC2').Value := DM_Main.qry_server_ypml.FieldbyName('MC2').value;数据库的字段是Varchar(80),但是赋值的时候总是获得的是乱码,即便直接赋值汉字也是获得乱码,哪位帮忙看看,
跟踪错误信息如图

解决方案 »

  1.   

    不是CSDN可以贴图么,怎么贴啊,日
      

  2.   

     SQL SERVER 200  ?
      

  3.   

    SQL SERVER2000看点重点行不?
      

  4.   

    修改库及字段的排序规则为为 Chinese_PRC_CI_AS
      

  5.   

    DM_Main.qry_server_ypml.FieldbyName('MC1').asstring;
    试验一下
      

  6.   

    如果直接朝你的表内用INSERT 插入汉字,然后也是乱码吗?
      

  7.   

    .Parameters.ParamByName对中文支持的不好
      

  8.   

    parameters.ParamByName('MyCompanyName').datatype=ftWideString   
      

  9.   

    你用这条语句试验一下 INSERT INTO 你的表名(你的汉字字段名) VALUES(N'你好');
    注意那个N一定要有~
      

  10.   

    发一下数据库定义吧.或者最好的办法是自己在Compile选项当中选中Use Debug Dcus,重新编译,然后跟踪进去看看相应字段的FieldType.另外就是把字段定义的大小缩小,个人估计跟字符集编码有关系.先确认数据库当中是否为中文编码这个是最为关键的(个人以为问题可能就发生在这里),然后再确认程序运行环境的字符集编码.如果是定义的大小超过255,倒有可能是类型的问题,但是楼主说的定义只有80,所以找编码.
      

  11.   

    乱码问题,那肯定是编码问题,如果数据库编码没有问题
    那就是你的delphi有问题或者你的操作系统有问题
    -------------------------
    另外你提供的下载没资源可下!
    图片最好先在空间上传,然后在这边引用地址
      

  12.   

    把DM_Main.qry_server_ypml.FieldbyName('DM').Value;
    该为
      DM_Main.qry_server_ypml.FieldbyName('DM').asstring
      

  13.   

    那个只是适用于NVARCHAR类型的吧,
      

  14.   

    存的时候你用Base64编码存,读出来的时候再解码 ,就不会乱码
      

  15.   


    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[jc_ypml]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[jc_ypml]
    GOCREATE TABLE [dbo].[jc_ypml] (
    [dm] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [code_parent] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [bh] [int] NULL ,
    [bm] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [mc1] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
    [mc2] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
    [py] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
    [py2] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
    [sy] [tinyint] NULL ,
    [zf] [tinyint] NULL ,
    [sx1] [tinyint] NULL ,
    [sx2] [tinyint] NULL ,
    [sx3] [tinyint] NULL ,
    [sx4] [tinyint] NULL ,
    [sx5] [tinyint] NULL ,
    [jx] [smallint] NULL ,
    [gg] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [dw] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [jg] [money] NULL ,
    [re] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
    [bcbl] [decimal](4, 2) NULL ,
    [dj] [tinyint] NULL ,
    [xj] [money] NULL ,
    [int1] [int] NULL ,
    [int2] [int] NULL ,
    [int3] [int] NULL ,
    [int4] [int] NULL ,
    [int5] [int] NULL ,
    [dec1] [decimal](18, 2) NULL ,
    [dec2] [decimal](18, 2) NULL ,
    [dec3] [decimal](18, 2) NULL ,
    [dec4] [decimal](18, 2) NULL ,
    [dec5] [decimal](18, 2) NULL ,
    [unique_key] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL 
    ) ON [PRIMARY]
    GO
      

  16.   

    我不是采用的存储过程就直接赋值的 dm_main.adocommand1.Parameters.ParamByName('UNIQUE_KEY').Value := GlobVar.qhdm;
              dm_main.adocommand1.Parameters.ParamByName('DM').Value := DM_Main.qry_server_ypml.FieldbyName('DM').Value;
              dm_main.adocommand1.Parameters.ParamByName('CODE_PARENT').Value := DM_Main.qry_server_ypml.FieldbyName('CODE_PARENT').value;
              dm_main.adocommand1.Parameters.ParamByName('BH').Value := DM_Main.qry_server_ypml.FieldbyName('BH').Value;
              dm_main.adocommand1.Parameters.ParamByName('BM').Value := DM_Main.qry_server_ypml.FieldbyName('BM').value;
              dm_main.adocommand1.Parameters.ParamByName('MC1').Value := DM_Main.qry_server_ypml.FieldbyName('MC1').value;
              dm_main.adocommand1.Parameters.ParamByName('MC2').Value := DM_Main.qry_server_ypml.FieldbyName('MC2').value;
              dm_main.adocommand1.Parameters.ParamByName('PY').Value := DM_Main.qry_server_ypml.FieldbyName('PY').value;
              dm_main.adocommand1.Parameters.ParamByName('PY2').Value := DM_Main.qry_server_ypml.FieldbyName('PY2').value;
              dm_main.adocommand1.Parameters.ParamByName('SY').Value := DM_Main.qry_server_ypml.FieldbyName('SY').value;
              dm_main.adocommand1.Parameters.ParamByName('ZF').Value := DM_Main.qry_server_ypml.FieldbyName('ZF').value;
              dm_main.adocommand1.Parameters.ParamByName('SX1').Value := DM_Main.qry_server_ypml.FieldbyName('SX1').value;
              dm_main.adocommand1.Parameters.ParamByName('SX2').Value := DM_Main.qry_server_ypml.FieldbyName('SX2').value;
              dm_main.adocommand1.Parameters.ParamByName('SX3').Value := DM_Main.qry_server_ypml.FieldbyName('SX3').value;
              dm_main.adocommand1.Parameters.ParamByName('SX4').Value := DM_Main.qry_server_ypml.FieldbyName('SX4').value;
              dm_main.adocommand1.Parameters.ParamByName('SX5').Value := DM_Main.qry_server_ypml.FieldbyName('SX5').value;
              dm_main.adocommand1.Parameters.ParamByName('JX').Value := DM_Main.qry_server_ypml.FieldbyName('JX').value;
              dm_main.adocommand1.Parameters.ParamByName('GG').Value := DM_Main.qry_server_ypml.FieldbyName('GG').value;
              dm_main.adocommand1.Parameters.ParamByName('DW').Value := DM_Main.qry_server_ypml.FieldbyName('DW').value;
              dm_main.adocommand1.Parameters.ParamByName('DJ').Value := DM_Main.qry_server_ypml.FieldbyName('DJ').value;
              dm_main.adocommand1.Parameters.ParamByName('REMARK').Value := DM_Main.qry_server_ypml.FieldbyName('REMARK').value;
              dm_main.adocommand1.Parameters.ParamByName('BCBL').Value := DM_Main.qry_server_ypml.FieldbyName('BCBL').value;
              dm_main.adocommand1.Parameters.ParamByName('XJ').Value := DM_Main.qry_server_ypml.FieldbyName('XJ').value;
              dm_main.adocommand1.Parameters.ParamByName('INT1').Value := DM_Main.qry_server_ypml.FieldbyName('INT1').value;
              dm_main.adocommand1.Parameters.ParamByName('INT2').Value := DM_Main.qry_server_ypml.FieldbyName('INT2').value;
              dm_main.adocommand1.Parameters.ParamByName('INT3').Value := DM_Main.qry_server_ypml.FieldbyName('INT3').value;
              dm_main.adocommand1.Parameters.ParamByName('INT4').Value := DM_Main.qry_server_ypml.FieldbyName('INT4').value;
              dm_main.adocommand1.Parameters.ParamByName('INT5').Value := DM_Main.qry_server_ypml.FieldbyName('INT5').value;
              dm_main.adocommand1.Parameters.ParamByName('DEC1').Value := DM_Main.qry_server_ypml.FieldbyName('DEC1').value;
              dm_main.adocommand1.Parameters.ParamByName('DEC2').Value := DM_Main.qry_server_ypml.FieldbyName('DEC2').value;
              dm_main.adocommand1.Parameters.ParamByName('DEC3').Value := DM_Main.qry_server_ypml.FieldbyName('DEC3').value;
              dm_main.adocommand1.Parameters.ParamByName('DEC4').Value := DM_Main.qry_server_ypml.FieldbyName('DEC4').value;
              dm_main.adocommand1.Parameters.ParamByName('DEC5').Value := DM_Main.qry_server_ypml.FieldbyName('DEC5').value;
              dm_main.adocommand1.Parameters.ParamByName('JG').Value := null;
              dm_main.adocommand1.Execute;
      

  17.   

    不清楚楼主所使用的是一个insert语句带paramters还是存储过程,如果是直接使用insert的话,建议避免转换,使得直接生成的SQL语句当中就是Unicode编码,并且使用如N'Test'类似指明.
      

  18.   

    或者在传递中文字符串的时候使用WideString
      

  19.   

    传递中文字符串的时候使用WideString
    正解,,,,,我原来用的String3ks