请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 11333|回复: 11

[求助] 关于delphi访问数据库发生了错误 !!!急!!!急!!!急!!!

[复制链接]
字体大小: 正常 放大
penguin        

1

主题

2

听众

23

积分

升级  18.95%

该用户从未签到

网络挑战赛参赛者

新人进步奖

发表于 2005-5-6 10:09 |显示全部楼层
|招呼Ta 关注Ta
project project2.exe raised exception class eoleexception with message ''在此上下文中不允许使用''c1999001999001999001999001''。此处只允许使用常量、表达式或变量。不允许使用列名。''.process stopped.use step or run to continue.
( Z; k4 C& A( E( b     ' X) M% F/ l: D, v  @4 H8 y
     while not adoqxiaoban.Eof
9 C( d2 ?, M- I/ ~9 N9 h     do3 V8 f$ L" j2 |( T1 g& O
     begin
9 j- I( j& D% N! Z$ Z5 _" g     strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname(''areacode'').AsString );
* c1 _+ h9 v% E7 y$ W6 y! G* v5 y, Z     strcodexia=strlinchang+''999''+stryinglinqu+''999''+strzuoyequ+''999''+strlinban+''999''+strxiaoban;! g" e) W' I( z# b5 _
     strcode:=strlinban+strxiaoban;
( U: M5 }0 n1 U( O; r0 H     adoqs.SQL.Clear ;) N9 T) Z; {! a  f% ^
     adoqs.SQL.Add(''insert into test1 values(''+strcodexiao+'',''+strcode+'')'');: D# E; k2 Z6 f  z* \
     adoqs.Prepared ;' h; C  s0 S9 f
     try) k; O7 W' g3 p+ ?9 Z  l
     adoqs.Open ;' U5 \1 }* X9 G# M8 `2 }2 l
     adoqxiaoban.Next ;- ^! M# Q% L# O; _- Q' f
     except
1 o" i2 P" X+ ]8 n     showmessage(''出错!'');
3 a+ N+ A; L/ L/ z     exit;2 a/ h2 a! B' o7 q4 U9 s$ H# h
     end;
5 R' x4 z5 k6 f* ?; ^     end;3 O% W) N& u6 z5 p/ V3 i
     adoqlinban.Next ;1 L- ?+ w! ?: J, L" k8 v& f- i+ ^
     
: Z; }5 I( _+ ^7 S; I     这是其中的一段代码 好像出错的就是在这 在adoxiaoban.next那 哪位大虾帮帮忙 很急了
zan
ilikenba 实名认证       

2634

主题

47

听众

1万

积分

  • TA的每日心情
    奋斗
    2024-3-28 06:16
  • 签到天数: 995 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    <>我估计是这句的问题adoqs.Open ;
    % l% c, ~+ R, ~5 \% f你先检查一下SQL语句对不对,我这里好多变量不知道,没有办法帮你调试!</P>
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>好的 我给你全部的代码吧</P><>unit Unit1;</P><>interface</P><>uses
    9 N; }5 l7 l( U6 U$ A  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,# `, n; `: K/ z# _" X
      Dialogs, StdCtrls, DB, ADODB;</P><>type
    4 q5 E, L9 D* g; D8 z( }( ^& M  TForm1 = class(TForm)
    # [6 f  e( l* k    Edit1: TEdit;
    % D/ L9 y7 G( R1 N* g3 H, q    Button1: TButton;6 K; m1 q  h3 A  o$ w7 Z/ l& G  m
        ADOConnection1: TADOConnection;4 ^6 [' n% N) ~: d9 t% T4 v/ c
        ADOQlinchang: TADOQuery;5 ~7 D9 R5 _  s9 _" B% W* Y
        ADOQyinglinqu: TADOQuery;( a% x& X+ h5 ?+ V
        ADOQzuoyequ: TADOQuery;1 t& G, x% \9 O* p$ i; X
        ADOQlinban: TADOQuery;
    5 W% k( s1 q5 h' a* \    ADOQxiaoban: TADOQuery;
    " B! v/ M) `9 j" v- |9 l  x: m5 M    ADOQs: TADOQuery;( ?( N2 H' c. g' L1 o! {' q. J
        procedure Button1Click(Sender: TObject);8 J& K7 ~" @+ Y# f4 q3 h3 p
      private) C" y5 w+ R% r  g
        { Private declarations }
    ; G8 F9 |; b5 [* A( v$ Y0 c  public( e6 j' p* V5 t$ H
        { Public declarations }
    , Y# d& Q+ p+ N2 w8 x  end;</P><>var% [; ~9 {0 v, j% C+ w1 a$ W
      Form1: TForm1;</P><>implementation</P><>{$R *.dfm}</P><>procedure TForm1.Button1Click(Sender: TObject);
    + s9 T* W+ x9 m2 O, R' ^) Wvar4 y1 s8 \6 x% ~7 J4 \) j% Y5 g
    strlinchang,stryinglinqu,strzuoyequ,strlinban,strxiaoban,strcodezuo,strcodeying,strcodelin,strcodexiao,strcode:string;
    : A- ~+ O5 I5 B! vbegin) V3 {3 T6 G# ~( Y3 i' Y+ O/ {* _
    adoqlinchang.Close ;
    / b6 ?) z3 i$ kadoqyinglinqu.Close ;
    7 w, U/ Z2 `& ]+ L# Y2 s, hadoqzuoyequ.Close ;
    6 u( \' ~5 j2 Z  J+ uadoqlinban.Close ;) y8 H" ]: t2 V1 @6 T  Z' o6 z
    adoqxiaoban.Close ;1 h/ [4 A( `5 ^1 O
    adoqs.Close ;$ S0 u* |& \& @
    adoqlinchang.SQL.Clear ;
      ~  S+ f7 E! o. G- r) ~. e/ Kadoqlinchang.SQL.Add('select areacode from tfsareacode where areaname=:linc');
    : l1 [2 ?7 t2 ]0 a' j8 Kadoqlinchang.Parameters.ParamByName('linc').Value :=edit1.Text ;
    & c+ {2 a6 M- v" i( Y# V, n# radoqlinchang.Prepared ;2 m1 Q5 ~$ S' _" g
    adoqlinchang.Open ;+ I; b( C* c# C' ^" ^0 R" C* j
    strlinchang:=trim(adoqlinchang.Fields.fieldbyname('areacode').AsString );
    0 U) N$ _7 N% Yadoqyinglinqu.SQL.Clear ;" P2 N% S& R. u5 G
    adoqyinglinqu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linc');+ q9 o- Q* W1 K) O. s
    adoqyinglinqu.Parameters.ParamByName('linc').Value :=edit1.Text ;: |2 @7 L/ \$ _- l- o' o. ^
    adoqyinglinqu.Prepared ;- C) d1 n' W0 V! P
    adoqyinglinqu.Open ;' x) \6 t1 b1 e" t5 Y. d' x. {" ^
    while not adoqyinglinqu.Eof
    $ P9 J6 z1 Q% J6 b) S; ldo
    # P4 W% k7 R0 Pbegin$ J. z* A; B2 O6 d: {0 R4 R  C
      stryinglinqu:=trim(adoqyinglinqu.Fields.fieldbyname('areacode').AsString );
    5 T5 `9 [9 q, g' v' l8 K; }  strcodeying:=strlinchang+'999'+stryinglinqu;
    9 C  T1 M0 t8 u8 Z+ I) B* B6 W  ADOQZuoYeQu.SQL.Clear;
    9 F# e; I4 P/ T: l  ADOQZuoYeQu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:yinglq');
    % `6 d  m) U+ d+ R  ADOQZuoYeQu.Parameters.ParamByName('yinglq').Value:=ADOQYingLinQu.Fields.fieldbyname('areaname').Value ;
    0 @3 U3 j. y6 e9 L1 g8 l0 P/ H) }  ADOQZuoYeQu.Prepared;
    9 {4 w" Z9 `0 Q% k  ADOQZuoYeQu.Open ;: I# z! K6 b+ A6 W3 ]: F
      while not adoqzuoyequ.Eof3 e, \3 P* u, E  L
      do
      M* l; \- t, v  begin, h3 b( |! J0 w$ J
        strZuoyequ:=ADOQZuoYeQu.Fields.fieldbyname('areacode').AsString ;       <a>file://逐</A>个作业区的代码9 b- S) y( F! l* `. m4 P
        strcodezu=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ;. S* G5 B4 z" w$ `( G* J/ U. N
        ADOQLinBan.SQL.Clear;
    5 H  X  K! P' t& D    ADOQLinBan.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:Zuoyq');
    ; g  U# O- v: g2 S3 Y% |: l    ADOQLinBan.Parameters.ParamByName('Zuoyq').Value :=ADOQZuoYeQu.Fields.fieldbyname('areaname').Value ;
    ! D( |  r& s" w, P8 D2 a8 p. T    ADOQLinBan.Prepared;1 W# d+ y0 ^3 A
        ADOQlinBan.Open;
    + I1 w* ]1 A0 d- _% I    while not adoqlinban.Eof+ D2 i- T* ^) D5 I, v1 S; Y
        do6 g0 p; G/ s1 I0 B
        begin; }/ V! D% i4 `
          strlinban:=trim(adoqlinban.Fields.fieldbyname('areacode').AsString );
    - U9 M5 k2 C+ I      strcodelin:=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban;
      H% t3 D5 F1 i) i2 Q- ~' q" a9 O      adoqxiaoban.SQL.Clear ;
    2 D# Q! l( A; l, l      adoqxiaoban.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linb');8 b0 o: F- \3 w: c" |) [3 z
          adoqxiaoban.Parameters.ParamByName('linb').Value :=adoqlinban.Fields.fieldbyname('areaname').Value ;6 E8 i) I: C# D4 Q
          adoqxiaoban.Prepared ;
    3 `: a. g7 o# [' c, d      adoqxiaoban.Open ;) j3 P  \$ ^8 \; d
            while not adoqxiaoban.Eof
    2 d' |  U' k: b        do$ P. I1 F' h; a
            begin9 Q, @, s0 E' J( _8 D
              strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname('areacode').AsString );) _+ Z7 _3 K- _2 L1 V9 P% D/ K+ [3 Q
              strcodexia=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban+'999'+strxiaoban;
    ! N7 d! a6 g) s          strcode:=strlinban+strxiaoban;( c/ q) n: S9 y7 d
              adoqs.SQL.Clear ;
    / @  q4 K5 Y6 a3 J0 o) f1 C% ^2 c          adoqs.SQL.Add('insert into test1 values('+strcodexiao+','+strcode+')');
    1 v; V  I; m0 M5 H. E3 j/ p% Z          adoqs.Prepared ;
    : R' r; m9 D6 G9 R          try
    2 a3 j' s/ y' W  a  x3 N          adoqs.Open ;1 \- t$ a  W" ]( b. s
              adoqxiaoban.Next ;
    7 I+ a' {# k- {3 @) Y          except" n6 n. }, m" z" a" j7 s. Z9 S! s( Z
              showmessage('出错!');
    3 l; E  U3 F! A, {          exit;+ {. E/ u1 W* w  D
              end;" ~) l- X5 Q; p
            end;
    ! W% d3 x8 h8 X        adoqlinban.Next ;
    , d; C* r5 u$ O3 g! L    end;" R$ P: I, {! D
        adoqzuoyequ.Next;2 ]8 Z+ z& |, B7 A- `
      end;
    / v' n$ M! m7 g7 i7 G& B, P7 q    adoqyinglinqu.Next ;3 c; `1 Y, E' Z3 q* H
    end;
    ; H; N0 c7 B2 P2 @; b  adoqlinchang.Close ;
    2 a% H" ?) S( n1 o4 v/ M  adoqyinglinqu.Close ;
    - ^' E- g6 q% p) I  adoqzuoyequ.Close ;
    2 D7 X+ Y) C  _* @( W$ m  adoqlinban.Close ;
    ' c2 B" B" Y+ D8 R: M9 G2 n  adoqxiaoban.Close ;
    ; j- Z4 v/ t5 V% q7 c9 f* L  adoqs.Close ;
    9 y+ _  ^! p, q, L  S$ H! send;</P><>end.</P>
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    回复

    使用道具 举报

    ilikenba 实名认证       

    2634

    主题

    47

    听众

    1万

    积分

  • TA的每日心情
    奋斗
    2024-3-28 06:16
  • 签到天数: 995 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    你的程序我读起来不太明白,没有数据库我也调试不了,但是从错误看应该是SQL语句的问题,你应该跟踪一下,看看每个生成的SQL语句是不是正确!
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    怎么跟踪亚 因为我的delphi没学多久 [em04] 我开始也以为是sql语句错 但试了下好像没什么问题
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>而且 每次用delphi向sql server里插入字符串时 如 001 到了数据库里面都是 1 </P><>数据库里的数据类型是char型的 </P>
    回复

    使用道具 举报

    ilikenba 实名认证       

    2634

    主题

    47

    听众

    1万

    积分

  • TA的每日心情
    奋斗
    2024-3-28 06:16
  • 签到天数: 995 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    你确认存入数据库的语句没有问题吗?001变成了1应该当作整型处理的原因,我一般喜欢用varchar的类型!
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>那是个实现从数据库中提取各级单位的编码 然后再编成最底一级的单位的编码 以表示它们间的上下级的关系 很简单的 </P><>这个很急 搞了一个5.1  都没弄出来 下面的工作都没法做了 拜托拜托了</P><>至于 001 变为 1的 程序在下面</P><>procedure TForm1.Button1Click(Sender: TObject);: W" s1 k7 h+ O1 [
    var
    " C1 G6 l7 A1 F! Y7 v/ E/ y: o- F  str1,str2:string;: K( [% J0 |8 L, R
    begin
    , ~7 `- W1 k! o" v$ E0 Q8 xstr1:='001';4 R* p8 G' e) M* q) k  c  n- v
    str2:='002';
    8 N3 D6 M' p4 @6 K3 Cadoquery1.Close ;
    + r3 h; i" x. z9 Y, [adoquery1.SQL.Clear ;( F, P" S; j6 t9 J  o, y% B( s
    adoquery1.SQL.Add('insert into test1 values('+str1+','+str2+')');' O4 n0 t+ m" ], \, |
    adoquery1.Prepared ;
    1 q. v& ]2 k9 L! ~  M. }adoquery1.ExecSQL ;  L7 z" I5 e' Y/ y) \8 k; b2 q# c
    end;</P><>我觉得我的程序没有错呀 </P><>还有 varchar 和 char 有什么区别亚</P><>万分感谢!!! </P>[em07][em01][em01][em01]
    回复

    使用道具 举报

    ilikenba 实名认证       

    2634

    主题

    47

    听众

    1万

    积分

  • TA的每日心情
    奋斗
    2024-3-28 06:16
  • 签到天数: 995 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    <>晕,你的SQL语句写的不对!字符串数据添加是两边要有',否则就按数字处理了!</P><>adoquery1.SQL.Add('insert into test1 values('''+str1+''','''+str2+''')');</P><>这句改成上面的就对了!</P>
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-3-29 03:36 , Processed in 0.740572 second(s), 98 queries .

    回顶部