QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 12556|回复: 10
打印 上一主题 下一主题

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

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

1

主题

2

听众

23

积分

升级  18.95%

该用户从未签到

网络挑战赛参赛者

新人进步奖

跳转到指定楼层
1#
发表于 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.& N  A. x, m. T) D8 J6 C
     1 s9 W( h3 l7 V, K( h
     while not adoqxiaoban.Eof
- ^8 {  Z6 v, l# [4 y     do+ W/ _2 P' [+ C  y4 a6 M( n
     begin
5 `  n( F) }6 Q' w) X: ]% w# d     strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname(''areacode'').AsString );
- Y- q9 \6 n- l     strcodexia=strlinchang+''999''+stryinglinqu+''999''+strzuoyequ+''999''+strlinban+''999''+strxiaoban;
( r& ?2 h9 O+ b     strcode:=strlinban+strxiaoban;; w8 K3 }$ u3 k* ^) K5 u9 i
     adoqs.SQL.Clear ;
; g" {( h% a2 d' ]# P! M! I6 }     adoqs.SQL.Add(''insert into test1 values(''+strcodexiao+'',''+strcode+'')'');2 z) P# }9 S/ }2 k- C7 `  b7 s
     adoqs.Prepared ;% g& p! N, D: a* N7 g8 q5 G0 S
     try
; A6 Z" o8 U5 U8 e. |     adoqs.Open ;$ r4 T# ]$ C5 N! o  \
     adoqxiaoban.Next ;3 G1 B0 h# v. E! {/ S6 c& o4 N
     except# X. V, g, W  F! A1 k% s
     showmessage(''出错!'');: C; P- U& C- ?+ i$ C  ?
     exit;
. P. T& U3 s+ k  j* m     end;
* G" ^! [- j0 u     end;
' M/ t9 P: h# X  Q. a- L0 W, B/ @     adoqlinban.Next ;
. L# X) \3 x4 |7 Y0 R, a" n0 |     ) D5 M4 Z& L; X
     这是其中的一段代码 好像出错的就是在这 在adoxiaoban.next那 哪位大虾帮帮忙 很急了
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
ilikenba 实名认证       

1万

主题

49

听众

2万

积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

    <>我估计是这句的问题adoqs.Open ;
    % f4 s; E. b5 a( s* z+ B2 X你先检查一下SQL语句对不对,我这里好多变量不知道,没有办法帮你调试!</P>
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>好的 我给你全部的代码吧</P><>unit Unit1;</P><>interface</P><>uses# ^$ O; _2 {: J4 H4 f  ?2 v
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,* f5 F; D6 J8 \4 _
      Dialogs, StdCtrls, DB, ADODB;</P><>type0 M3 y( B/ _& H: n4 Q$ R: ~
      TForm1 = class(TForm)
    ! }5 \0 T1 ?$ {: D4 w+ k    Edit1: TEdit;
    3 B  M  z7 O8 l* y; H    Button1: TButton;  z: z" e2 k) E. Z8 W
        ADOConnection1: TADOConnection;
    4 a- n# F8 m3 h/ z% {    ADOQlinchang: TADOQuery;
    6 U1 c+ r2 ~4 J% j* x$ G    ADOQyinglinqu: TADOQuery;8 e& e6 H$ f$ E+ M8 C- i
        ADOQzuoyequ: TADOQuery;
    # i+ ~* I- v$ o0 J3 G7 t    ADOQlinban: TADOQuery;
    " L5 \6 E% s4 y0 ^/ `: u    ADOQxiaoban: TADOQuery;; Y* f1 ~; X; w% T( \: b
        ADOQs: TADOQuery;
    . }; }3 q0 k  K2 P; W1 N' J* c    procedure Button1Click(Sender: TObject);; k2 v$ ~2 Q" k+ f# p
      private7 o4 o' \; V, l& f) V
        { Private declarations }( i- G% T# s$ z* W: J
      public
    6 R* J* t1 P. Y3 W2 I0 n    { Public declarations }3 r  _; R4 w/ e0 l
      end;</P><>var; ?( L  r) L" f; \' {
      Form1: TForm1;</P><>implementation</P><>{$R *.dfm}</P><>procedure TForm1.Button1Click(Sender: TObject);
    - |7 C" I" @- `% `var* p8 r* W/ f  A' J& V. i- P
    strlinchang,stryinglinqu,strzuoyequ,strlinban,strxiaoban,strcodezuo,strcodeying,strcodelin,strcodexiao,strcode:string;
    . b# Y, r+ Y' m" Tbegin# @4 B. ?( M8 t! J# m+ W
    adoqlinchang.Close ;9 F$ a0 J! ?2 [3 C3 k# G
    adoqyinglinqu.Close ;! \: d/ v# l; h% ~
    adoqzuoyequ.Close ;
    * K$ z7 P: [6 j: ~. ]; Cadoqlinban.Close ;
    9 x! j. L* D7 nadoqxiaoban.Close ;
    + ?$ s- n) i( Q( \3 \adoqs.Close ;1 g/ o1 F  O1 a
    adoqlinchang.SQL.Clear ;( @/ r4 N: d" h
    adoqlinchang.SQL.Add('select areacode from tfsareacode where areaname=:linc');
    + s/ _# m; s0 d6 Jadoqlinchang.Parameters.ParamByName('linc').Value :=edit1.Text ;3 h' D7 U' U1 ?$ a4 y6 J" X
    adoqlinchang.Prepared ;
    5 b; p4 Z! j5 B$ e+ O" qadoqlinchang.Open ;
    ! N5 y6 P8 k! M! c/ p+ `/ ]3 W% z! E& ustrlinchang:=trim(adoqlinchang.Fields.fieldbyname('areacode').AsString );( c" v' P7 H" J! L  j3 {* c
    adoqyinglinqu.SQL.Clear ;, F7 G8 a2 G1 l4 U
    adoqyinglinqu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linc');9 Q/ G4 I5 I0 }9 e
    adoqyinglinqu.Parameters.ParamByName('linc').Value :=edit1.Text ;
    8 \3 j5 [) l* ~& g, ?& ]/ Hadoqyinglinqu.Prepared ;
    2 T& U0 c3 S; |adoqyinglinqu.Open ;
    & n# W, w" {2 j3 g- }/ E1 H, wwhile not adoqyinglinqu.Eof* h2 D9 Y- Z6 b2 j
    do* R4 e# k- S/ F; ?4 }: X1 k
    begin
    ) w: X+ e& l. o7 F% G  stryinglinqu:=trim(adoqyinglinqu.Fields.fieldbyname('areacode').AsString );3 c1 v9 b( _( T4 {
      strcodeying:=strlinchang+'999'+stryinglinqu;
    6 i7 ^5 ^+ O4 e6 l8 o4 Q0 j- J  ADOQZuoYeQu.SQL.Clear;* R/ w8 w6 f0 p4 ]/ P# h
      ADOQZuoYeQu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:yinglq');
    2 j  V. P3 p* h2 D0 k# B  ADOQZuoYeQu.Parameters.ParamByName('yinglq').Value:=ADOQYingLinQu.Fields.fieldbyname('areaname').Value ;
    . g( i8 E  x$ L5 p" S5 u  ADOQZuoYeQu.Prepared;
    # [% I- p6 N5 H! K, Y% a  ADOQZuoYeQu.Open ;
    9 p) l. x! D, y. K  L, T  while not adoqzuoyequ.Eof' s9 Y* s- n, m" Z, T9 Q
      do
    ! x" x$ P9 B( h. J; M( \  begin
      p6 T( L( G2 f( @    strZuoyequ:=ADOQZuoYeQu.Fields.fieldbyname('areacode').AsString ;       <a>file://逐</A>个作业区的代码! Y4 h% w: G4 e4 q. l. F
        strcodezu=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ;
    " G6 Z* K( m: z8 u5 q7 `9 B2 C    ADOQLinBan.SQL.Clear;6 Z) `6 D0 W8 `
        ADOQLinBan.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:Zuoyq');  y. g+ m7 a( Y
        ADOQLinBan.Parameters.ParamByName('Zuoyq').Value :=ADOQZuoYeQu.Fields.fieldbyname('areaname').Value ;
      C% Q. T  N7 G5 h0 j! Q    ADOQLinBan.Prepared;  @2 ~5 G6 t7 `6 o6 `
        ADOQlinBan.Open;
    ; k- r! M8 ]7 W; v1 o* p% Y. G" u    while not adoqlinban.Eof1 ~) f" V/ J# k* s" m6 Z
        do
    % I* ?* B2 C0 W0 n4 v3 N    begin" t! |6 r: e- t3 w3 O0 z
          strlinban:=trim(adoqlinban.Fields.fieldbyname('areacode').AsString );
    % M( W3 N. D1 S8 a      strcodelin:=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban;& F+ ]$ h% i( f: I. P* T
          adoqxiaoban.SQL.Clear ;
    ; T0 `+ X$ d2 ^4 l; v2 r      adoqxiaoban.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linb');& B2 j* a" V1 q; A2 S  G
          adoqxiaoban.Parameters.ParamByName('linb').Value :=adoqlinban.Fields.fieldbyname('areaname').Value ;  K( D2 v' ^% s
          adoqxiaoban.Prepared ;( n! n+ X  _1 _& J1 ]
          adoqxiaoban.Open ;
    2 y, `6 }: R9 F+ D2 g- E        while not adoqxiaoban.Eof3 I1 N2 s' P7 o: O% f$ Z3 `) v1 [9 R
            do- o+ R; @- x. `1 K( F/ S5 R
            begin
    ; A# \- _$ s, S, e" n          strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname('areacode').AsString );- B$ {" @, t% }$ h# G* X8 b" n
              strcodexia=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban+'999'+strxiaoban;1 V! h: `, x- N% o5 }6 B2 z
              strcode:=strlinban+strxiaoban;7 g' Z7 W" s: {8 O+ b/ F
              adoqs.SQL.Clear ;
    2 O; V6 q) c# E          adoqs.SQL.Add('insert into test1 values('+strcodexiao+','+strcode+')');
    - L0 e% Y+ g( a5 ?          adoqs.Prepared ;
    - s$ j5 @! Z9 T4 T          try, d8 T% Z. O0 j3 S% s, L
              adoqs.Open ;% M6 i: m' L2 }0 ^/ Z' {! J
              adoqxiaoban.Next ;
    ! m& E9 f+ v8 U          except
    ; l. _6 {. R8 T8 Y! ^! D4 _7 i6 N& {          showmessage('出错!');
    % _& T3 G6 d" e, k' I; a0 ]3 X) N' _7 h; J          exit;
    " y2 i0 n* |8 g. Z) w6 ^! q) J9 a          end;
    - P3 Z- R, z2 m1 v/ {        end;) M+ j# v; s+ i& J6 B5 f
            adoqlinban.Next ;
    6 S. \8 U- ]8 t2 o' U* n+ P    end;
    & d' R- {5 Q0 n" C! d, X% L    adoqzuoyequ.Next;8 {3 l1 }& {3 b( g! P
      end;  Y& ~2 G0 f1 \4 K
        adoqyinglinqu.Next ;  C9 {5 g: d4 [$ F) i  X; y8 T
    end;
    6 Z( i/ b! m( ?' A4 d  adoqlinchang.Close ;& W2 g& J6 o, t! q
      adoqyinglinqu.Close ;, B5 g/ n- N# d- v
      adoqzuoyequ.Close ;
    ; h8 L. @# C% f4 b% `  adoqlinban.Close ;
    . O. q) n! w# @0 O; C  adoqxiaoban.Close ;
    1 b1 u' D$ r, R/ R) ?  adoqs.Close ;( `4 o. ^* s' t/ P$ F
    end;</P><>end.</P>
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [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 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [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);6 H; C8 A1 j$ x  J3 i
    var6 i; y' i7 q1 _+ P- w/ D
      str1,str2:string;
    $ q' f  u, R' _5 u, Z6 Kbegin  S6 O0 k7 }$ }* x/ l' {+ A0 X
    str1:='001';6 \* A: M" M$ m
    str2:='002';# V. S4 _) x$ A6 c3 \
    adoquery1.Close ;+ ]  f! i7 j4 l- M9 W4 e- W1 l
    adoquery1.SQL.Clear ;; g3 w( |' T5 L0 t
    adoquery1.SQL.Add('insert into test1 values('+str1+','+str2+')');& w  D! P/ o; j. s. u7 [( p5 Q
    adoquery1.Prepared ;, N% j" `) q# u1 E: m3 s
    adoquery1.ExecSQL ;
    ! c  H1 X5 @8 y; o) u  Wend;</P><>我觉得我的程序没有错呀 </P><>还有 varchar 和 char 有什么区别亚</P><>万分感谢!!! </P>[em07][em01][em01][em01]
    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [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, 2025-8-16 01:06 , Processed in 0.881250 second(s), 96 queries .

    回顶部