EMyError when Setting AutoPrepare to true on a complex SQL Statement (Script having Uservariables)

Discussion of open issues, suggestions and bugs regarding MyDAC (Data Access Components for MySQL) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
swierzbicki
Posts: 451
Joined: Wed 19 Jan 2005 09:59

EMyError when Setting AutoPrepare to true on a complex SQL Statement (Script having Uservariables)

Post by swierzbicki » Mon 18 Sep 2006 12:55

Hi,

I'm getting an EMyError exception when setting autoprepare to true on a complex SQL Statement (Script having Uservariables)

exception class : EMyError
exception message : #42000Erreur de syntaxe près de '; SELECT (0.000 + @_DemandeFinancementEnCours) AS DemandeFin' at line 103.

Here is the SQL Statement :

Code: Select all

SET
/*Demandes Financement en cours*/
@_DemandeFinancementEnCours = 0.000 + IFNULL((SELECT
  SUM(IFNULL(demandesfinancement.MontantAFinancer,0))
FROM
  demandesfinancement
  INNER JOIN affairessia ON (demandesfinancement.IdAffaireSIA = affairessia.IdAffaireSIA and affairessia.DateAnnulation IS NULL)
WHERE
 (demandesfinancement.FinancementAccepte = 'N' or demandesfinancement.FinancementAccepte is null) AND (demandesfinancement.IdClientFE2000 = :prIdClientFE2000)),0)  ,
/*Demandes Financement acceptés*/
@_DemandeFinancementAccepte = 0.000 + IFNULL((SELECT
  SUM(IFNULL(demandesfinancement.MontantAFinancer,0))
FROM
  demandesfinancement
  INNER JOIN affairessia ON (demandesfinancement.IdAffaireSIA = affairessia.IdAffaireSIA AND affairessia.DateAnnulation IS NULL )
WHERE
  (demandesfinancement.FinancementAccepte = 'O') AND (demandesfinancement.IdClientFE2000 = :prIdClientFE2000)),0) ,
/*Acomptes à percevoir*/
@_AcompteAPercevoir = 0.000 + IFNULL((SELECT
  SUM(IFNULL(affairessia.AcompteAPercevoir,0))
FROM
  affairessia
WHERE
  affairessia.IdStadeAffaireSIA = 1
  And affairessia.DateAnnulation IS NULL AND affairessia.idClientFE2000 = :prIdClientFE2000),0) ,



/*Acomptes Percus*/
@_AcomptePercu = 0.000 + IFNULL((SELECT
  Sum(IFNULL(reglements.MontantRegle,0))
FROM
  reglements
INNER JOIN affairessia ON (reglements.IdAffaireSIA = affairessia.IdAffaireSIA)
WHERE
  reglements.IdTypeReglement = 1
  And affairessia.DateAnnulation IS NULL and reglements.idclientfe2000 = :prIdClientFE2000),0) ,
/*Avances Credits Percu*/
@_AvanceCreditPercu = 0.000 + IFNULL((SELECT
  SUM(IFNULL(reglements.MontantRegle,0))
FROM
  reglements
INNER JOIN affairessia ON (reglements.IdAffaireSIA = affairessia.IdAffaireSIA AND affairessia.DateAnnulation IS NULL)
WHERE
  reglements.IdTypeReglement = 2 and reglements.idclientfe2000 = :prIdClientFE2000),0) ,
/*Reglements Percus*/
@_ReglementPercu = 0.000 + IFNULL((SELECT
  SUM(IFNULL(reglements.MontantRegle,0))
FROM
  reglements
WHERE
  reglements.IdtypeReglement = 3 and reglements.idclientfe2000 = :prIdClientFE2000),0) ,
/*Financements Percu*/
@_FinancementPercu = 0.000 + IFNULL((SELECT
  SUM(IFNULL(reglements.MontantRegle,0))
FROM
  reglements
WHERE
  reglements.IdtypeReglement = 4 and reglements.idclientfe2000 = :prIdClientFE2000),0)   ,



/*CA Client*/
@_Facture = 0.000 + IFNULL((SELECT
  SUM((IFNULL(affaires.VenteRemiseeAvecPoseHT,0)) * (1.000 + (IFNULL(affaires.TauxTVA,0)/100.000)))
FROM
  affaires
WHERE
  affaires.DateFacturation IS NOT NULL AND affaires.DateAvoir IS NULL and affaires.IdClientFE2000 = :prIdClientFE2000),0) ,
/*Avoirs*/
@_Avoir = 0.000 + IFNULL((SELECT
  SUM((IFNULL(-affaires.VenteRemiseeAvecPoseHT,0)) * (1.000 + (IFNULL(affaires.TauxTVA,0)/100.000)))
FROM
  affaires
WHERE
  affaires.DateAvoir IS NOT NULL AND affaires.DateFacturation IS NULL and affaires.IdClientFE2000 = :prIdClientFE2000),0) ,



/*Demandes Avoir en cours*/
@_DemandeAvoirEnCours = 0.000 + IFNULL((SELECT
  SUM(IFNULL(avoirs.MontantAvoirDemande,0))
FROM
  avoirs
WHERE
  (avoirs.AvoirAccepte = 'N' or avoirs.AvoirAccepte is null) and (avoirs.IdclientFE2000 = :prIdClientFE2000)),0) ,
/*Avoirs Acceptés*/
@_DemandeAvoirAccepte = 0.000 + IFNULL((SELECT
  SUM(IFNULL(avoirs.MontantAvoirDemande,0))
FROM
  avoirs
WHERE
  (avoirs.AvoirAccepte = 'O') and (avoirs.IdclientFE2000 = :prIdClientFE2000)),0) ,



/*EO*/
@_MontantOuvert = 0.000 + IFNULL((SELECT
SUM(IFNULL(ecrituresouvertes.MontantOuvertTTC,0))
FROM
  ecrituresouvertes
Where
ecrituresouvertes.IdclientFE2000 = :prIdClientFE2000),0);

Select
(0.000 + @_DemandeFinancementEnCours) as DemandeFinancementEnCours,
(0.000 + @_DemandeFinancementAccepte) as DemandeFinancementAccepte,
(0.000 + @_AcompteAPercevoir) as AcompteAPercevoir,
(0.000 + @_AcomptePercu) as AcomptePercu,
(0.000 + @_AvanceCreditPercu) as AvanceCreditPercu,
(0.000 + @_ReglementPercu) as ReglementPercu,
(0.000 + @_FinancementPercu) as FinancementPercu,
(0.000 + @_Facture) as Facture,
(0.000 + @_Avoir) as Avoir,
(0.000 + @_DemandeAvoirEnCours) as DemandeAvoirEnCours,
(0.000 + @_DemandeAvoirAccepte) as DemandeAvoirAccepte,
(0.000 + @_MontantOuvert) as montantOuvert,
(0.000 + @_AcompteAPercevoir - (@_AcomptePercu + @_AvanceCreditPercu )) as TotalAcomptesAPercevoir,
(0.000 + @_Facture + @_Avoir)  as TotalCA,
(0.000 + @_ReglementPercu + @_FinancementPercu) as TotalReglement,
(0.000 + ((@_Facture + @_Avoir) - (@_ReglementPercu + @_FinancementPercu + @_AvanceCreditPercu  + @_AcomptePercu ))) as SoldeClientAgence,
(0.000 + @_MontantOuvert - ((@_Facture + @_Avoir) - (@_ReglementPercu + @_FinancementPercu + @_AvanceCreditPercu  + @_AcomptePercu ))) as EcartSolde

Borland Developer Studio 2006 With Upd2 + Hotfixes
Corelab MyDAC version 4.10.0.18

MySQL server version: 4.1.21-community-nt
MySQL client version: Direct

back_log 50
basedir D:\MySQL\MySQL Server 4.1\
binlog_cache_size 32768
bulk_insert_buffer_size 8388608
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir D:\MySQL\MySQL Server 4.1\share\charsets/
collation_connection latin1_swedish_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci
concurrent_insert ON
connect_timeout 5
datadir D:\MySQL\MySQL Server 4.1\Data\
date_format %Y-%m-%d
datetime_format %Y-%m-%d %H:%i:%s
default_week_format 0
delay_key_write ON
delayed_insert_limit 100
delayed_insert_timeout 300
delayed_queue_size 1000
expire_logs_days 0
flush OFF
flush_time 1800
ft_boolean_syntax + -><()~*:""&|
ft_max_word_len 84
ft_min_word_len 4
ft_query_expansion_limit 20
ft_stopword_file (built-in)
group_concat_max_len 1024
have_archive YES
have_bdb NO
have_blackhole_engine NO
have_compress YES
have_crypt NO
have_csv NO
have_example_engine NO
have_geometry YES
have_innodb YES
have_isam NO
have_ndbcluster NO
have_merge_engine YES
have_openssl NO
have_query_cache YES
have_raid NO
have_rtree_keys YES
have_symlink YES
init_connect
init_file
init_slave
innodb_additional_mem_pool_siz 12582912
innodb_autoextend_increment 8
innodb_buffer_pool_awe_mem_mb 0
innodb_buffer_pool_size 564133888
innodb_data_file_path ibdata1:10M:autoextend
innodb_data_home_dir
innodb_fast_shutdown ON
innodb_file_io_threads 4
innodb_file_per_table OFF
innodb_flush_log_at_trx_commit 1
innodb_flush_method
innodb_force_recovery 0
innodb_lock_wait_timeout 50
innodb_locks_unsafe_for_binlog OFF
innodb_log_arch_dir
innodb_log_archive OFF
innodb_log_buffer_size 6291456
innodb_log_file_size 44040192
innodb_log_files_in_group 2
innodb_log_group_home_dir .\
innodb_max_dirty_pages_pct 90
innodb_max_purge_lag 0
innodb_mirrored_log_groups 1
innodb_open_files 300
innodb_table_locks ON
innodb_thread_concurrency 8
interactive_timeout 28800
join_buffer_size 131072
key_buffer_size 290455552
key_cache_age_threshold 300
key_cache_block_size 1024
key_cache_division_limit 100
language D:\MySQL\MySQL Server 4.1\share\french\
large_files_support ON
lc_time_names en_US
license GPL
local_infile ON
log OFF
log_bin OFF
log_error .\fic-in01.err
log_slave_updates OFF
log_slow_queries OFF
log_update OFF
log_warnings 1
long_query_time 10
low_priority_updates OFF
lower_case_file_system OFF
lower_case_table_names 1
max_allowed_packet 16776192
max_binlog_cache_size 4294967295
max_binlog_size 1073741824
max_connect_errors 10
max_connections 310
max_delayed_threads 20
max_error_count 64
max_heap_table_size 16777216
max_insert_delayed_threads 20
max_join_size 4294967295
max_length_for_sort_data 1024
max_prepared_stmt_count 16382
max_relay_log_size 0
max_seeks_for_key 4294967295
max_sort_length 1024
max_tmp_tables 32
max_user_connections 0
max_write_lock_count 4294967295
myisam_data_pointer_size 4
myisam_max_extra_sort_file_siz 107374182400
myisam_max_sort_file_size 107374182400
myisam_recover_options OFF
myisam_repair_threads 1
myisam_sort_buffer_size 161480704
myisam_stats_method nulls_unequal
named_pipe OFF
net_buffer_length 16384
net_read_timeout 30
net_retry_count 10
net_write_timeout 60
new OFF
old_passwords OFF
open_files_limit 1560
pid_file D:\MySQL\MySQL Server 4.1\Data\fic-in01.pid
port 3306
preload_buffer_size 32768
prepared_stmt_count 0
protocol_version 10
query_alloc_block_size 8192
query_cache_limit 1048576
query_cache_min_res_unit 4096
query_cache_size 185597952
query_cache_type ON
query_cache_wlock_invalidate OFF
query_prealloc_size 8192
range_alloc_block_size 2048
read_buffer_size 61440
read_only OFF
read_rnd_buffer_size 258048
relay_log_purge ON
relay_log_space_limit 0
rpl_recovery_rank 0
secure_auth OFF
shared_memory OFF
shared_memory_base_name MYSQL
server_id 0
skip_external_locking ON
skip_networking OFF
skip_show_database OFF
slave_net_timeout 3600
slave_transaction_retries 0
slow_launch_time 2
sort_buffer_size 262136
sql_mode
sql_notes ON
sql_warnings ON
storage_engine InnoDB
sync_binlog 0
sync_frm ON
sync_replication 0
sync_replication_slave_id 0
sync_replication_timeout 0
system_time_zone Paris, Madrid (heure d'?t
table_cache 620
table_type InnoDB
thread_cache_size 15
thread_stack 196608
time_format %H:%i:%s
time_zone SYSTEM
tmp_table_size 161480704
tmpdir E:/Temp
transaction_alloc_block_size 8192
transaction_prealloc_size 4096
tx_isolation REPEATABLE-READ
version 4.1.21-community-nt
version_comment MySQL Community Edition (GPL)
version_compile_machine ia32
version_compile_os Win32
wait_timeout 28800

Antaeus
Posts: 2098
Joined: Tue 14 Feb 2006 10:14

Post by Antaeus » Thu 21 Sep 2006 13:37

This is MySQL Server restriction. It is unable to prepare multi-statement queries.

Post Reply