QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 12891|回复: 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.8 R5 o4 O; h/ i. Z' Q
     
7 o( P  A  U& N! b" {     while not adoqxiaoban.Eof
; c/ {9 [. h0 C     do
7 J4 a; a- T; a1 l2 M0 f     begin. z2 y. V9 e2 v) W
     strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname(''areacode'').AsString );( N+ ?, k2 n; i) w1 n
     strcodexia=strlinchang+''999''+stryinglinqu+''999''+strzuoyequ+''999''+strlinban+''999''+strxiaoban;
& _7 v* V3 d6 i' ^, W4 G& `     strcode:=strlinban+strxiaoban;
/ S" \$ n+ T# N5 R: M7 q4 m6 i2 {     adoqs.SQL.Clear ;$ {+ E6 S# `  D* @0 z" \: k' j5 ]
     adoqs.SQL.Add(''insert into test1 values(''+strcodexiao+'',''+strcode+'')'');  r- K! g" s: |9 V/ R
     adoqs.Prepared ;
8 \3 s9 T+ j# [( t3 e! a     try8 U% L- T3 s5 G
     adoqs.Open ;
1 t, [, v( l/ u% @$ F4 j     adoqxiaoban.Next ;6 @: `/ V: n- @1 d! L& M
     except
  c, g6 J0 f' S     showmessage(''出错!'');1 ~1 m* N6 y* e4 X* @
     exit;
* B# f0 X1 c! q     end;6 p1 T4 A6 z7 p+ a! @, a: y5 N6 b6 z) F
     end;" `. e& g% z  [
     adoqlinban.Next ;7 b+ w# r1 T; v0 E& C7 G0 I
     
3 D& b) w. o' I. t$ J6 u( t  W     这是其中的一段代码 好像出错的就是在这 在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 ;* K: }* V. r9 Z1 C' {
    你先检查一下SQL语句对不对,我这里好多变量不知道,没有办法帮你调试!</P>
    回复

    使用道具 举报

    penguin        

    1

    主题

    2

    听众

    23

    积分

    升级  18.95%

    该用户从未签到

    网络挑战赛参赛者

    新人进步奖

    <>好的 我给你全部的代码吧</P><>unit Unit1;</P><>interface</P><>uses
    9 P7 y% F! g- v; A3 t( {  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    & L# f! T# v2 {# a: e# r; ]3 _( [) M  Dialogs, StdCtrls, DB, ADODB;</P><>type6 k" B3 D# t5 j1 z6 H5 z
      TForm1 = class(TForm)
    + N, Z. }( q0 A& T5 I    Edit1: TEdit;
    % f2 i, K* Q0 U; n. t9 m- w    Button1: TButton;9 y* [% g3 C- V4 T
        ADOConnection1: TADOConnection;% ^+ M3 `1 o% c  @: L5 c, m
        ADOQlinchang: TADOQuery;6 x6 h; {- c9 O& F- @: e
        ADOQyinglinqu: TADOQuery;
    0 U- p2 U* r6 z5 C    ADOQzuoyequ: TADOQuery;1 J, q% ?0 T. n
        ADOQlinban: TADOQuery;
    % O' ]4 Y; K9 _  L' h    ADOQxiaoban: TADOQuery;
    * F2 M+ c8 i1 }1 W    ADOQs: TADOQuery;
    ! z8 _: S- w3 q4 O! k0 F    procedure Button1Click(Sender: TObject);' z: I, @' _1 Z1 X  X
      private3 ^7 t2 Q3 \+ T3 f, P5 \5 \/ i9 Z
        { Private declarations }6 e5 q* F! D. R* g- ?* Y
      public
    ) S2 s/ a5 j. p/ Q. _/ a    { Public declarations }+ j/ E. t8 m% E0 [: c
      end;</P><>var8 @* Y7 H* Z+ k3 l- B& E; G& A+ j6 a
      Form1: TForm1;</P><>implementation</P><>{$R *.dfm}</P><>procedure TForm1.Button1Click(Sender: TObject);
    # G' j  k. i- q0 i# G3 u* [var
    - \* c* H7 a# R+ `strlinchang,stryinglinqu,strzuoyequ,strlinban,strxiaoban,strcodezuo,strcodeying,strcodelin,strcodexiao,strcode:string;  U' R& i- }& u5 l0 A
    begin
    0 P7 v: }  b# Z8 K# r4 padoqlinchang.Close ;
    . u; S: P- @2 [1 d; j. R3 madoqyinglinqu.Close ;. U  R0 f* H- v: Q1 B1 Z9 _3 @
    adoqzuoyequ.Close ;
    ( ^" T$ R$ O* t' l8 [3 H  Uadoqlinban.Close ;
    . @$ m) V- B, b% Cadoqxiaoban.Close ;
    6 i4 y! H4 S. T- N2 Ladoqs.Close ;
    % |: O- \2 f: Vadoqlinchang.SQL.Clear ;
      a( `, w" k4 ?2 D" K% Aadoqlinchang.SQL.Add('select areacode from tfsareacode where areaname=:linc');: ~5 y7 T* h& z
    adoqlinchang.Parameters.ParamByName('linc').Value :=edit1.Text ;3 ~+ s0 w+ g0 B; z6 `
    adoqlinchang.Prepared ;
    9 D/ S( \, T2 G% a0 p4 f5 wadoqlinchang.Open ;
    1 {0 P$ a6 Y9 A5 E5 \; B( Bstrlinchang:=trim(adoqlinchang.Fields.fieldbyname('areacode').AsString );/ |' ~0 Z6 m5 f# V
    adoqyinglinqu.SQL.Clear ;9 ?* j) e" a- I: G1 L' @
    adoqyinglinqu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linc');9 l6 R. r$ B+ A% `0 M
    adoqyinglinqu.Parameters.ParamByName('linc').Value :=edit1.Text ;: D# T0 H* ]5 f) ~9 f
    adoqyinglinqu.Prepared ;
    2 r9 @! M* f& e( u% Hadoqyinglinqu.Open ;- I# m0 i4 k( J6 e
    while not adoqyinglinqu.Eof
    " Q" u5 j! w, V' u7 c" g  \do% Q& Z  O& H5 ~6 @/ t
    begin
    ! e2 a# `$ C% R* g; Y0 X% `  stryinglinqu:=trim(adoqyinglinqu.Fields.fieldbyname('areacode').AsString );* x4 \, b4 ~# K; a; W. C" g
      strcodeying:=strlinchang+'999'+stryinglinqu;
    7 @; ?4 b, J! C( b- ]  ?; h# }  ADOQZuoYeQu.SQL.Clear;( _, c# B5 I" ?) g. `
      ADOQZuoYeQu.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:yinglq');0 `3 a7 M3 J3 p- `
      ADOQZuoYeQu.Parameters.ParamByName('yinglq').Value:=ADOQYingLinQu.Fields.fieldbyname('areaname').Value ;/ u; \: f4 y+ N
      ADOQZuoYeQu.Prepared;& E) ]$ v9 w: }( m
      ADOQZuoYeQu.Open ;
    * t4 ]+ E, o4 J$ S: W0 P1 x  while not adoqzuoyequ.Eof) [  Q+ ^$ x3 J) M2 ~# y2 n. \$ {0 n
      do
    ) X& D* t) S2 {( `: G: x# _  begin; N- `5 o- R; H0 x# q
        strZuoyequ:=ADOQZuoYeQu.Fields.fieldbyname('areacode').AsString ;       <a>file://逐</A>个作业区的代码
    ' {( ]" c: _, ]- i" n$ ^0 i: c, k    strcodezu=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ;( B1 o1 N. n1 e9 @" |4 X7 V% q
        ADOQLinBan.SQL.Clear;3 a& L; O! D# W! e: T
        ADOQLinBan.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:Zuoyq');7 b5 g& ~  [, @" [" a5 M. N
        ADOQLinBan.Parameters.ParamByName('Zuoyq').Value :=ADOQZuoYeQu.Fields.fieldbyname('areaname').Value ;/ v2 ~# g$ K( e, L8 b+ q3 ^  Z% B
        ADOQLinBan.Prepared;5 Z2 p9 E- t4 W9 Y4 J$ I9 z0 }. J6 ^
        ADOQlinBan.Open;. d( o: U0 x$ O' I% g' V7 g
        while not adoqlinban.Eof
    % @/ Z5 F2 l( o# F    do
    ! N, A/ _- H: }    begin
    . V% I$ n8 X; n0 z1 J' q      strlinban:=trim(adoqlinban.Fields.fieldbyname('areacode').AsString );# a  `  ?2 f$ s& \0 X3 l2 y
          strcodelin:=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban;1 F+ G5 Y( @, Q# G1 N! A
          adoqxiaoban.SQL.Clear ;
    ! o2 U3 o8 @' \& K! O) {      adoqxiaoban.SQL.Add('select areaname,areacode from tfsareacode where fatherarea=:linb');4 h* b! C) P  u, g. o
          adoqxiaoban.Parameters.ParamByName('linb').Value :=adoqlinban.Fields.fieldbyname('areaname').Value ;! e9 X. m0 T$ N' V
          adoqxiaoban.Prepared ;$ s/ h) q. S4 k0 B
          adoqxiaoban.Open ;
    ' M. l/ q) w$ T# d6 R5 Y        while not adoqxiaoban.Eof4 j: R* Z& X1 |
            do
    5 @" V' A4 K' a' j        begin5 g# n2 L2 p2 b
              strxiaoban:=trim(adoqxiaoban.Fields.fieldbyname('areacode').AsString );
    4 D" n% S- h1 w. v4 P3 P          strcodexia=strlinchang+'999'+stryinglinqu+'999'+strzuoyequ+'999'+strlinban+'999'+strxiaoban;
    # G& D; @0 |0 D7 R& u' C' M          strcode:=strlinban+strxiaoban;' B7 q4 s5 P1 T. S$ M0 \$ T
              adoqs.SQL.Clear ;
    / T5 W& L6 p  ~. y2 A9 ~          adoqs.SQL.Add('insert into test1 values('+strcodexiao+','+strcode+')');4 z, V$ n+ p& g1 f
              adoqs.Prepared ;, y" o; t6 e: f; T& X
              try( @. O$ ]$ k# f9 ^9 R: p3 c
              adoqs.Open ;
    7 j# P+ {5 d; h' Z" i+ r# F4 E          adoqxiaoban.Next ;4 n7 A) S8 T3 v! d. s* l. F
              except
    , A* M% [8 e# c; M          showmessage('出错!');8 U% J4 e# j5 c* p# y7 d
              exit;& {  u# ?- E4 d( Z
              end;4 Y9 |! C( U+ G4 l: ~( g: f# @, \
            end;& B0 P! \5 _" X+ k  h7 d% n
            adoqlinban.Next ;) X- `+ n9 E( {
        end;
    7 M9 N- L9 s  `2 G; v; Y7 Y    adoqzuoyequ.Next;
    " ^- e+ J+ S2 G9 q, Y; `7 d5 y" N' ?! s  end;0 {; i- b% `/ \* r5 X; q% S
        adoqyinglinqu.Next ;  l5 Z" I" O! f0 L5 \+ x
    end;
    - I/ r) ~; J) N  adoqlinchang.Close ;6 y1 h5 c, D. [& j+ i
      adoqyinglinqu.Close ;
    4 @  b5 S5 h* W  adoqzuoyequ.Close ;+ f3 o9 e. `9 ]
      adoqlinban.Close ;
    ; o, b$ G1 a0 ]7 S' f9 }4 Q' @2 f  adoqxiaoban.Close ;
      g3 W/ ~$ C# E% |8 g# u) D! T  adoqs.Close ;7 ]9 ~6 m; \# N4 `5 W6 @
    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);
    ; [' _0 Q0 B% ]$ fvar
    ' B8 H! C# Z; m7 Y9 o" _  str1,str2:string;
    1 N" B  [4 z/ ^( u6 Y. ^: C1 fbegin
    ; D0 F( m5 B, a% j0 Xstr1:='001';
    ; y& V' T) f% z' ?) Astr2:='002';' z/ U6 p  t+ P: s- G$ s) R
    adoquery1.Close ;
    . W3 j, E* ]6 K  @7 p% `adoquery1.SQL.Clear ;
    ( q6 V9 i4 Z- t) c. b! @adoquery1.SQL.Add('insert into test1 values('+str1+','+str2+')');- E& s4 ~$ [0 g7 e
    adoquery1.Prepared ;. f1 O) ]4 i" d5 q. L
    adoquery1.ExecSQL ;* @- y/ W! Q, Y9 T, [
    end;</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-4-18 04:50 , Processed in 0.404790 second(s), 96 queries .

    回顶部