QQ登录

只需要一步,快速开始

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

[求助] 关于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.
+ B. y! m9 Q: |9 [: i  J8 ]     
+ ^# W, ]- W3 Q" n5 R     while not adoqxiaoban.Eof
9 t  Z6 M  X& J8 I     do& {3 e- }4 B/ b
     begin
$ Q+ E) C8 H, N- {6 A     strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname(''areacode'').AsString );
) a! [$ {4 f. S" l, I     strcodexia=strlinchang+''999''+stryinglinqu+''999''+strzuoyequ+''999''+strlinban+''999''+strxiaoban;
: L  \! \) ~% J# V6 ^' o& H; [     strcode:=strlinban+strxiaoban;# P! a: M. l" S, @3 L7 M0 g7 D
     adoqs.SQL.Clear ;- M" J) `+ T& a- Y
     adoqs.SQL.Add(''insert into test1 values(''+strcodexiao+'',''+strcode+'')'');
7 [( q8 p; y5 @     adoqs.Prepared ;% V+ t% c/ _; ]& C  H
     try
7 `  ~3 y0 D# A     adoqs.Open ;
* f, ]* x4 E/ j" H7 B% A  n     adoqxiaoban.Next ;4 j6 w+ J- c" P# G! }9 Z0 N
     except
% j% ~8 G6 ]7 A3 D     showmessage(''出错!'');& K* Z( N+ A" {& f" e
     exit;% p$ P, b) k! a/ s( g% k9 ~
     end;
! X/ l2 X; ^, M2 F: \/ s  A1 t  I1 `     end;
( A# W! g" x- F$ z( f     adoqlinban.Next ;1 v1 k8 F& B$ q& \6 u1 X
     
" b9 i8 w! a( ]3 L  J% c3 K' p     这是其中的一段代码 好像出错的就是在这 在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 ;$ ^* c% Z* w$ m0 N& f
    你先检查一下SQL语句对不对,我这里好多变量不知道,没有办法帮你调试!</P>
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>好的 我给你全部的代码吧</P><>unit Unit1;</P><>interface</P><>uses
    . \3 K! F2 i! d+ l  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,3 L8 `8 n3 ?, A5 X' L& e, Z
      Dialogs, StdCtrls, DB, ADODB;</P><>type! I# B* x  P3 [4 S+ W$ T; V
      TForm1 = class(TForm)6 M3 [5 o+ p# A$ l$ B
        Edit1: TEdit;' X7 N' d) B, ^5 W1 Z% \
        Button1: TButton;3 V; \: ~( D+ b2 d" M
        ADOConnection1: TADOConnection;: c9 N& [! s# o- G+ w, A5 v) ~  r  g
        ADOQlinchang: TADOQuery;
    / T0 x: g0 {7 N8 ~; t    ADOQyinglinqu: TADOQuery;
    ) ~3 ?: n* m. c# o4 o    ADOQzuoyequ: TADOQuery;
    0 y0 V; A" ?+ S' p    ADOQlinban: TADOQuery;) o& ]. a& e- @( C
        ADOQxiaoban: TADOQuery;+ u" C& T  K; H7 _9 a
        ADOQs: TADOQuery;* x7 J( [' @0 c5 g! L
        procedure Button1Click(Sender: TObject);
    / O  E& \/ N/ X& R  private
    + U" n  n- z" {2 L; s3 |    { Private declarations }8 D2 K& s, e( x; {
      public0 W! O) C% C5 A0 ~" w2 t+ i
        { Public declarations }
    , A' n: ?& X- z) k" I! o  end;</P><>var; ?+ w) S7 `% ]' L" D6 B
      Form1: TForm1;</P><>implementation</P><>{$R *.dfm}</P><>procedure TForm1.Button1Click(Sender: TObject);
    2 S) J, ]  {6 V8 w9 w# q: V* q! ovar) F/ i/ e7 n/ b/ w, k# a8 Y% D% `( L
    strlinchang,stryinglinqu,strzuoyequ,strlinban,strxiaoban,strcodezuo,strcodeying,strcodelin,strcodexiao,strcode:string;3 T( F+ N9 k6 b: }- H$ l! _  \
    begin* k0 L5 n$ e' D: l' n  O% i
    adoqlinchang.Close ;
    ! @2 S  f( R' v% d1 D3 m5 P' V" gadoqyinglinqu.Close ;; l/ h* A2 c' |( m9 t
    adoqzuoyequ.Close ;
    . P/ l3 |3 a# o7 S  jadoqlinban.Close ;! X7 ?4 ~8 W( o9 Y5 X
    adoqxiaoban.Close ;) {# A/ P1 C% H$ D
    adoqs.Close ;
    ; U4 E7 y+ ?7 R# i8 s+ ?; c) Padoqlinchang.SQL.Clear ;
    # k7 d+ N( }$ Yadoqlinchang.SQL.Add('select areacode from tfsareacode where areaname=:linc');8 S# ?$ V8 _, A; H( C' l
    adoqlinchang.Parameters.ParamByName('linc').Value :=edit1.Text ;
    2 v5 q. i4 ]0 l8 C( D1 V- _adoqlinchang.Prepared ;+ V: I* I$ w$ ?- [
    adoqlinchang.Open ;% V5 r0 d5 U% L5 l
    strlinchang:=trim(adoqlinchang.Fields.fieldbyname('areacode').AsString );
    / s8 n1 O  Z9 d, J' @; a' N. |& badoqyinglinqu.SQL.Clear ;0 q4 C  D7 p3 |
    adoqyinglinqu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linc');
    , j$ J" I  B  p' Dadoqyinglinqu.Parameters.ParamByName('linc').Value :=edit1.Text ;& [  N+ L4 R$ w( H9 G
    adoqyinglinqu.Prepared ;
    9 k  S  f8 S6 W  B. k2 v; X2 Tadoqyinglinqu.Open ;
    ! f4 y. m( g$ [, f* kwhile not adoqyinglinqu.Eof0 ]) A" F/ `$ k. ?: u
    do) F3 e# F$ C( y  A7 S6 ~
    begin! t: W9 o; ~  C! D
      stryinglinqu:=trim(adoqyinglinqu.Fields.fieldbyname('areacode').AsString );
    : R9 X2 D4 I1 C' Z; k: @  strcodeying:=strlinchang+'999'+stryinglinqu;, W6 b. T6 x$ m$ o
      ADOQZuoYeQu.SQL.Clear;: F9 c/ C' m3 V
      ADOQZuoYeQu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:yinglq');
    : s; D2 L, s. v0 S  x  ADOQZuoYeQu.Parameters.ParamByName('yinglq').Value:=ADOQYingLinQu.Fields.fieldbyname('areaname').Value ;0 ^2 D! Z5 j7 j% {9 r+ F, L
      ADOQZuoYeQu.Prepared;
    7 n  D  }; B9 W6 \: z% g  ADOQZuoYeQu.Open ;" h! U; M, P4 C, X8 h
      while not adoqzuoyequ.Eof
    6 w' n2 \) a7 f) ^  do  ?' ~# A* t9 j% |
      begin0 Y4 S+ X2 B" p7 C8 R' k
        strZuoyequ:=ADOQZuoYeQu.Fields.fieldbyname('areacode').AsString ;       <a>file://逐</A>个作业区的代码3 J( b/ W9 S- a/ b4 a6 g, D
        strcodezu=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ;
    2 v' C$ A( I- L( W8 g5 F) e    ADOQLinBan.SQL.Clear;( P# z5 d' z* f' n
        ADOQLinBan.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:Zuoyq');
    + C' J! O: _. {    ADOQLinBan.Parameters.ParamByName('Zuoyq').Value :=ADOQZuoYeQu.Fields.fieldbyname('areaname').Value ;; ?9 k' n5 c. |1 ], f8 W
        ADOQLinBan.Prepared;
    & l6 s$ ^$ k' X5 q# }4 \    ADOQlinBan.Open;  d5 i! a! w5 q- F. d3 H
        while not adoqlinban.Eof) z! v* b2 T( `% u! m
        do
    * _# Y3 m5 v9 w9 a) @    begin
    5 X4 O3 s% P2 H0 H0 j' G      strlinban:=trim(adoqlinban.Fields.fieldbyname('areacode').AsString );/ w6 q) t8 I& @$ U" K$ H! o
          strcodelin:=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban;
    5 `3 v5 E. I& Y, O      adoqxiaoban.SQL.Clear ;
    ( Z3 o- r  j0 q( h      adoqxiaoban.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linb');& r5 z1 Z2 V) u' v0 _/ T
          adoqxiaoban.Parameters.ParamByName('linb').Value :=adoqlinban.Fields.fieldbyname('areaname').Value ;
    9 Q  g/ i5 }# b! Y! c5 E      adoqxiaoban.Prepared ;- n( l6 t( C" l0 M
          adoqxiaoban.Open ;
    5 @% A) x8 C# Y. E, z8 ]0 S, [        while not adoqxiaoban.Eof
    8 e% b: P& R. N7 _  y" ]        do
    # F" G" I0 Q! [- A6 _7 g& A* ~        begin
    / [* |1 i. s2 O, h6 q% m2 [4 E          strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname('areacode').AsString );
    + c( l5 H# d5 Y) U/ b7 F          strcodexia=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban+'999'+strxiaoban;
    ) b( D, ]* O5 p  J3 m0 p, x          strcode:=strlinban+strxiaoban;
    0 d) K; z6 Y. g% ?7 b          adoqs.SQL.Clear ;: P/ n% |1 U. i* C; b
              adoqs.SQL.Add('insert into test1 values('+strcodexiao+','+strcode+')');
    6 X6 P' J& f, r3 \: W          adoqs.Prepared ;( o- j8 B' C; ]2 e6 p  a  X
              try
    ; o# W4 s5 m' X% f$ w/ J( D. s          adoqs.Open ;
    4 A  v) t7 h, _9 C) ?0 f          adoqxiaoban.Next ;5 ^" E( O# Y: o
              except
    - S6 d2 w- K9 v, r$ i          showmessage('出错!');% |3 L4 w9 U8 s! f* Z1 J6 f+ o1 U
              exit;7 z: p3 C! a4 d/ v- r
              end;
    - I9 V. K1 Y) {* H4 C        end;
    ) w5 Y1 F8 U' t8 _6 f        adoqlinban.Next ;+ w, J' B3 J( W5 \$ `, Q+ Y$ }
        end;; j( p) j2 [! P0 i* h0 B. R7 I9 n
        adoqzuoyequ.Next;
    3 A: A; B) ]+ Q3 s$ Z  end;
    ( l4 h$ h* D# q    adoqyinglinqu.Next ;
    ! y/ d  x/ t! d) ?8 K  p3 N2 t5 F: _end;* o! h4 I5 @- A2 m, W
      adoqlinchang.Close ;
    7 J) t* m& n4 p; C/ s  adoqyinglinqu.Close ;! z& e. ^' E; P7 g' B
      adoqzuoyequ.Close ;. S7 q1 \* T1 @! e5 |
      adoqlinban.Close ;+ m$ @6 z9 B) C* E" Y3 ]
      adoqxiaoban.Close ;
    , W) f* o4 \' L9 M) k5 U  adoqs.Close ;
    3 q, d: h- f  s' |- Nend;</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);
    ; U2 r, e% F6 {9 Zvar
    1 h  g, t! `* ]7 E  str1,str2:string;; A' o! r: F7 a# u% H/ d: l% `
    begin
    3 |& x2 \2 U+ W# L1 ~% Nstr1:='001';
    & ^: A+ x: N6 q2 zstr2:='002';4 E) V+ I$ f+ C  \4 V
    adoquery1.Close ;
    ' h8 N) q( w. Y9 B& C, Badoquery1.SQL.Clear ;" `. F: s2 d! @( [* @
    adoquery1.SQL.Add('insert into test1 values('+str1+','+str2+')');5 @' T" `! W- D* j7 n+ ]5 E
    adoquery1.Prepared ;
    ; }+ R, V4 M4 Q5 ]# p) }adoquery1.ExecSQL ;
    ) [$ D/ Z* r8 b# S" o- nend;</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, 2026-7-18 06:54 , Processed in 0.489129 second(s), 97 queries .

    回顶部