Sunteți pe pagina 1din 17

bonjour; je suis entrain de raliser une appliacation en delphi en utilisant : delphi7 sql server 2000 le lient avec la bese

de donnes ce fait a l'aide de ADO (ADOConnection , ADOQuery,...). je voudrai inseri la date dans la table escale(num_esc,numvoy,cod_nav,date_esc) voici ma requet : procedure TForm2.BitBtn7Click(Sender: TObject); var date1:string[10]; date2:string[16]; begin date1:=datetostr(DateTimePicker7.date);//renvoyer la date en string date2:=date1[7]+date1[8]+date1[9]+date1[10]+date1[4]+date1[ 5]+date1[1]+date1[2];//recuperer la date sous la forme yyyymmdd(ex: 20090823) date2:=date+' '+timetostr(DateTimePicker7.date) / ajouter l'heur a la date; DataModule3.ADOConnection1.Connected:=true; DataModule3.ADOQuery2.Close; DataModule3.ADOQuery2.SQL.Clear; DataModule3.ADOQuery2.SQL.add('INSERT escale(num_esc,num_voy,cod_nav,date_esc)values(:parnum_esc,: parnum_voy,:parcod_nav,:pardate_esc)'); DataModule3.ADOQuery2.Parameters.ParamByName('parnum_esc') .Value:=edit1.Text; DataModule3.ADOQuery2.Parameters.ParamByName('parnum_voy') .Value:=edit2.Text; DataModule3.ADOQuery2.Parameters.ParamByName('parcod_nav'). Value:=DBLookupComboBox1.KeyValue; DataModule3.ADOQuery2.Parameters.ParamByName('pardate_esc') .Value:=date2; DataModule3.ADOQuery2.Prepared:=true; DataModule3.ADOQuery2.ExecSQL; il m'afiche un message d'erreur. Quelquun peut m'aider. end;
Message dit par atlas56 le 04-09-2009 19:26:40 --------------Il y a que le timide et le prtention qui n'apprennent pas

Publicit

Post le 31-08-2009 05:34:36

Post le 01-09-2009 09:57:45

antac
..

Il t'affiche quoi comme message d'erreur dj.

atla le probleme c'est la date . le message d'erreur affich est s56 comme suite : salam oualik " l'application utilise une valeur d'un type incorrecte pour oum l'operation en cours" j'ai trouv une solution mais je vouderai comprendre pour quoi la premier ecriture est fausse. Date1:=datetostr(DateTimePicker7.date); date2:=date1[7]+date1[8]+date1[9]+date1[10]+date1[4]+d ate1[5]+date1[1]+date1[2]; date2:=date2+' '+timetostr(DateTimePicker17.time); ShowMessage(date2); DataModule3.ADOConnection1.Connected:=true; DataModule3.ADOQuery2.Close; DataModule3.ADOQuery2.SQL.Clear; DataModule3.ADOQuery2.SQL.add('INSERT escale(num_esc,num_voy,cod_nav,date_arr)values(:parnum_ esc,:parnum_voy,:parcod_nav,'''+date2+''')'); DataModule3.ADOQuery2.Parameters.ParamByName('parnum _esc').Value:=edit1.Text; DataModule3.ADOQuery2.Parameters.ParamByName('parnum _voy').Value:=edit2.Text; DataModule3.ADOQuery2.Parameters.ParamByName('parcod_ nav').Value:=DBLookupComboBox1.KeyValue; DataModule3.ADOQuery2.Prepared:=true; DataModule3.ADOQuery2.ExecSQL;
Message dit par atlas56 le 04-09-2009 19:22:24 Post le 03-09-2009 02:29:30

Post le 03-09-2009 02:20:53

atlas56
salam oualikoum

la date est enregistree , seulement pour quoi a ne marche pas avec (:pardate_esc) , pour quoi faut il metre la date entre deux cotes ; la date en elle meme est une chaine de caracteres, c'est mettre une chain de caracteres entre deux cotes. comment force sql server 2000 a accepter un format autre que le format yyyymmdd parec que je pense le probleme vien de la .
Message dit par atlas56 le 03-09-2009 14:46:49 Post le 03-09-2009 10:34:08

antac
..

SET DATEFORMAT MYD //Change le format de date

SELECT CAST('03/1987/21' AS DATETIME) //Cast au format datetime atlas56


salam oualikoum Post le 03-09-2009 14:45:20

vous pouvez donner plus d'explication avec un exemple si c'et possible (adoquery)
Post le 03-09-2009 14:48:32

atlas56
salam oualikoum

adoquery.sql.add('?????????? ');
Post le 03-09-2009 14:57:09

antac
..

Essayes avec adoquery.sql.add mais c'est pas sur que a marche. Ce que je faisais l'poque o je dveloppais en Delphi pour ce genre de cas c'tait de crer une storeproc SQL Server qui prenait en paramtre ce que tu passes ta requte. Tu as un composant ADO pour les storeproc (j'ai plus le nom mais il est cot de adoquery). La majorit de mon code SQL tait directement sur SQL Server, cel permettait de corriger certains trucs sans avoir redployer mon application.
Message dit par antac le 03-09-2009 14:58:41 Post le 03-09-2009 14:58:37

atlas56
salam oualikoum

vous parlez de sql server query analizer c'est ce que je fais seulement je ne sais pas comment charger les requet que je ralise vers delphi , en pluse comment faire passe les parametres : exemple : insert into escal(num_esc,num_voy,cod_nav,date_esc) values('09:03/001','001R',1,'20090902 15:45:00') la ce n'est qu'un exemlpe , maintenan si je veux maitre a la place des valeurs des variables : 09:03/001 : var num_esc 001R : var num_voy * * etc

dans la base de donnes(cre avec sql server 2000, la clef:num_esc, num_voy et cod_nav c'est des clefs trangers des tables voyage et navire respectivement) type num_esc,num_voy: string(bon en sql server 200 c'est char); cod_nav: int
Message dit par atlas56 le 04-09-2009 02:16:57 Post le 03-09-2009 15:00:24

antac
..

gn ?
Post le 03-09-2009 15:18:48

atlas56
salam oualikoum

oui il existe un composant ADOStoredProc (je vien de lire l'aide delphi) TADOStoredProc encapsule une procdure stocke d'une base de donnes ADO
Post le 03-09-2009 20:45:04

antac
..

Voil, partir de l tu cre une storeproc dans SQL Server avec les SET et tu appelles cette storeproc avec les paramtres que tu veux depuis Delphi
Post le 04-09-2009 02:22:27

atlas56
salam oualikoum

merci pour votre aide , je vais essay de faire ces (storeproc) en sql server 2000.
Post le 05-09-2009 02:50:00

atlas56
salam oualikoum

bonjour ; j'ai cre une simple procedure avec sql query analizer rien que pour faire un test , le probleme est : _ d'abors ou dois-je l'enregistrer pour que le delphi la dtcte qui veux dire elle va apparaitre dans la liste procedurename de l'inspicteur d'objet ou de l'appeler avec la opriet :ADOStoredProc.procedureName('nom de la procedure' ) _ dans quel format dois-je enregistrer la procedure (type .sql ou .text ou.....??). pouvez vous m'aider , s'il vous plait.

merci d'avence.
Message dit par atlas56 le 05-09-2009 05:51:33 Post le 06-09-2009 09:57:22

antac
..

Tu n'as pas a enregistrer en quoi que ce soit ta procdure. Tu cres ta procdure stocke sous SQL Server, ta procdure sera list dans le ADOStoredProc pour peu que tu l'as bien lier la base de donnes. A partir de l tu peux l'utiliser comme a.

atlas56
salam oualikoum

Post le 07-09-2009 18:44:18

bonjour; j'ai arriv a crer ma procedure select , un pet test pour voir, - seulement les procedures ou sont elles stocks ? j'ai cherch dans le repertoire de sql sever 2000 dans programme file je n'ai pas trouv de traces. 2- comment puis-je crer des procedures dans sql server query analizer est les stock comme procedures. un coup de puce me serai d'une grande aide

antac
..

Post le 08-09-2009 08:46:58

Comme leurs noms l'indique, ce sont des procdures stockes, ces dites procdures sont stockes dans ta base de donnes directement au mme titre qu'une table ou qu'une vue. http://barlatier.developpez.com/cs [...] kee/cours/
Message dit par antac le 08-09-2009 08:47:26 Post le 10-09-2009 06:05:50

atlas56
salam oualikoum

bonjour; merci pour votre aide je commence avoir plus clair, d'ailleur je viens de faire certaines procedures simple comme select

pour mes table est ca marche. salutations. antac


.. Post le 10-09-2009 08:55:17

J'en suis ravi.


Post le 15-09-2009 04:12:06

atlas56
salam oualikoum

bonjour; j'ai cre une table sur sql server 2000 avec une clef auto-increment , aprs avoir fais des test , j'ai supprim les champs seulement le conteur continu de s'incrementer , comment faire pour remettre le conteur a 1.
Message dit par atlas56 le 15-09-2009 04:13:15 Post le 15-09-2009 10:38:11

antac
..

TRUNCATE TABLE maTable; Ca va tout te virer et remettre l'autoincrmentation P.S. Une recherche sur google t'aurait donn la solution trs vite...
Message dit par antac le 15-09-2009 10:38:44 Post le 16-09-2009 06:55:26

atlas56
salam oualikoum

Je sais, mais en ce qui concerne SQL server il y a pas grand chose est mon help de sql server est en anglais et moi je ne me dbrouille pas bien en anglais.
Post le 16-09-2009 11:00:10

antac
..

Pas grand chose ? http://www.google.fr/#hl=fr&q=SQL+ [...] b2d1161c6d Premier lien

atlas56
salam oualikoum

Post le 17-09-2009 06:01:17

avec TRUNCATE TABLE ca ne marche pas!!!!!

j'ai trouv une solution sur le site Microsoft TECHNet: DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value ), avec la bibliotheque en franais. ca marche tres bien. j'ai un probleme avec TRUNCATE TABLE : voila j'ai 3 tables table 1 avec clef1 (auto-increment) table 2 avec clef2 (auto-increment) table3 avec comme clef la concatination de (clef1+clef2) car clef1 et clef2 sont des clefs etrangers dans la table3. en fesant TRUNCATE TABLE table1 ou TRUNCATE TABLE table2 dans sql server query analizer il affiche le message d'erreur suivant: Cannot truncate table 'table1' because it is being referenced by a FOREIGN KEY constraint. autrement dit : Ne peut pas tronquer la table 'table1', car elle est rfrence par une contrainte FOREIGN KEY est ce que en peut pas tronquer une table quant sa clef figure comme clef tranger dans d'autres tables??
Message dit par atlas56 le 17-09-2009 06:06:12 Post le 17-09-2009 08:44:26

antac
..

C'est ce qu'on appelle une "contrainte d'intgrit rfrentielle"


Message cit 1 fois Post le 18-09-2009 09:23:34

atla antac a crit s56 :


salam um

oualiko C'est ce qu'on appelle une "contrainte d'intgrit rfrentielle"

bonjour;

voici ma procedure: CREATE PROCEDURE [dbo].[remise] @ind int AS DBCC CHECKIDENT (info_scheduls, RESEED, @ind) GO est voila comment je l'appele avec le delphi7 : DataModule3.ADOStoredProc1.ProcedureName:='remise'; DataModule3.ADOStoredProc1.Refresh; DataModule3.ADOStoredProc1.Parameters.ParamByName('@i nd').Value:=strtoint(Label26.Caption)-1; DataModule3.ADOStoredProc1.ExecProc; a l'exicution (Click sur un Button) il affiche le message d'erreur suivant: ADOStoredProc1: impossible d'ffectuer cette opration sur un ensomble de donnes ferm. j'ai fais un test sur SQL server query analzer ca marche : Declare @ind int set @ind=8 EXECUTE remise @ind pouvez vous m'eder? salutations.
Post le 18-09-2009 09:32:16

ant DataModule3.ADOConnection1.Open; ac
..

DataModule3.ADOStoredProc1.ProcedureName:='remise'; DataModule3.ADOStoredProc1.Refresh; DataModule3.ADOStoredProc1.Parameters.ParamByName('@in d').Value:=strtoint(Label26.Caption)-1; DataModule3.ADOStoredProc1.ExecProc; Un conseil : nomme explicitement tes composants et tes variables, tu t'en sortiras pas sinon

atla

Post le 18-09-2009 10:04:08

s56
salam oualiko um

ca marce pas , je ne sais pas porquoi !!! le parametre connection dans l'inspecteur d'objet de ADOStoredProc1 recois ADOConnction1 et connected de ADOConnction1 est a true. j'ai fais une procedure select ca marche sans meme DataModule3.ADOConnection1.Open. avec adoquery ca marche mais DataModule3.ADOQuery2.Close; DataModule3.ADOQuery2.SQL.Clear; DataModule3.ADOQuery2.SQL.Add('DBCC CHECKIDENT (info_scheduls, RESEED, ar_ind)'); DataModule3.ADOQuery2.Parameters.ParamByName('par_ind ').Value:=strtoint(Label26.Caption)-1; DataModule3.ADOQuery2.ExecSQL; je vouderai avance avec ces procedure si vous pouvez m'eder. merci.

atlas56
salam oualikoum

Post le 19-09-2009 12:13:22

bonjour; (j'utilise sql server 2000 developer edition) j'ai essay d'autres procedures il m'afiche toujours le mme message d'erreur ADOStoredProc1: impossible d'ffectuer cette opration sur un ensomble de donnes ferm. voici la procedure CREATE PROCEDURE [dbo].[selection] @ind int AS select * from info_scheduls where num_sch=@ind GO je pense qu' il y a quelque chose a confirgurer sur le sql server, de puis deux jours je chereche sans trouver de solutions.

je ne sais pas si vous pouvez voir d'ou vient le probleme . salutations.


Message dit par atlas56 le 19-09-2009 12:15:04 Post le 20-09-2009 01:05:07

antac
..

C'est pas cot SQL Server, c'est cot Delphi ton problme. C'est pas ExecSQL que tu dois faire mais Open et lier le datasource de ton adoquery un composant permettant de visualiser le rsultat de ta requte.

atlas 56
salam oualikou m

Post le 20-09-2009 01:42:03

bonjour; j'utilise ADOStoredProc la pocedure: CREATE PROCEDURE [dbo].[selection] @ind int AS select * from info_scheduls where num_sch=@ind GO l'appele: DataModule3.ADOConnection1.Open('sa','atlas'); DataModule3.ADOStoredProc1.ProcedureName:='selection'; DataModule3.ADOStoredProc1.Refresh; DataModule3.ADOStoredProc1.Parameters.ParamByName(' @ind').Value:=1; DataModule3.ADOStoredProc1.ExecProc; DataModule3.ADOStoredProc1.Open; DataModule3.ADOStoredProc1.Active:=true; le dataset d'un datasouce1 est lie a ADOStoredProc1. datasource d'un DBgrid est lie a datasource1 l'xecution s'arrete a la ligne : DataModule3.ADOStoredProc1.Parameters.ParamByName(' @ind').Value:=1; il affiche le mesage d'erreur suivant : ADOStoredProc1: impossible d'ffectuer cette opration sur un ensomble de donnes ferm.

je ne vois pas ou est le probleme !!!! je pense que le probleme vient de la configuration de sql server . si vous avez une ide??? salutations.
Message dit par atlas56 le 20-09-2009 01:51:13 Post le 20-09-2009 14:59:52

anta DataModule3.ADOConnection1.Open('sa','atlas'); c DataModule3.ADOStoredProc1.ProcedureName:='selection'; .. DataModule3.ADOStoredProc1.Refresh; DataModule3.ADOStoredProc1.Parameters.ParamByName('@i nd').Value:=1; DataModule3.ADOStoredProc1.Active:=true; DataModule3.ADOStoredProc1.Open;


Message dit par antac le 20-09-2009 15:00:29 Post le 02-01-2010 19:01:36

atlas 56
salam oualikou m

bonjour; j'utilise ADOStoredProc la pocedure: CREATE PROCEDURE [dbo].[selection] @ind int AS select * from info_scheduls where num_sch=@ind GO l'appele: DataModule3.ADOConnection1.Open('sa','atlas'); DataModule3.ADOStoredProc1.ProcedureName:='selection'; DataModule3.ADOStoredProc1.Refresh; DataModule3.ADOStoredProc1.Parameters.ParamByName(' @ind').Value:=1; DataModule3.ADOStoredProc1.ExecProc; DataModule3.ADOStoredProc1.Open; DataModule3.ADOStoredProc1.Active:=true; le dataset d'un datasouce1 est lie a ADOStoredProc1. datasource d'un DBgrid est lie a datasource1 l'xecution s'arrete a la ligne : DataModule3.ADOStoredProc1.Parameters.ParamByName(' @ind').Value:=1;

il affiche le mesage d'erreur suivant : ADOStoredProc1: impossible d'ffectuer cette opration sur un ensomble de donnes ferm. je ne vois pas ou est le probleme !!!! je pense que le probleme vient de la configuration de sql server . si vous avez une ide??? salutations. antac
.. Post le 20-01-2010 09:00:13

Enlve DataModule3.ADOStoredProc1.ExecProc;
Post le 08-03-2010 20:49:00

atlas bonjour; 56 ca marche avec a: salam oualiko DataModule3.ADOConnection1.Open('passe','nom_util'); um DataModule3.ADOStoredProc1.ProcedureName:='nome proc'; DataModule3.ADOStoredProc1.close; DataModule3.ADOStoredProc1.open; DataModule3.ADOStoredProc1.Parameters.ParamByName('@i nd1').Value:=edit1.text; DataModule3.ADOStoredProc1.Parameters.ParamByName('@i nd1').Value:=edit1.text; ..................................................................................... .......................... DataModule3.ADOStoredProc1.Parameters.ParamByName('@i nd(n)').Value:=edit(n).text; DataModule3.ADOStoredProc1.Active:=false; DataModule3.ADOStoredProc1.Active:=true; salutations antac
.. Post le 09-03-2010 11:30:15

Mon Dieu que c'est moche et pas logique ce que tu as crit...

DataModule3.ADOConnection1.Open('passe','nom_util'); DataModule3.ADOStoredProc1.Active:=false; DataModule3.ADOStoredProc1.ProcedureName:='nome proc'; DataModule3.ADOStoredProc1.Parameters.ParamByName('@ind1').Value:=e ........................................................................................................... DataModule3.ADOStoredProc1.Parameters.ParamByName('@ind(n)').Value:= DataModule3.ADOStoredProc1.Active:=true;

t= CRD (periode - 1).

hodes, mais elles n'ont pas l'air de marcher.

r dans une fentre part

tissement P1 Pal1] eriode actuelle] - 1) as Dbut, ...

re vidente, mais je ne l'ai pas trouve dans les FAQ...

Bonjour
Rdacteur/Modrateur

ce post devrait t'aiguiller http://www.developpez.net/forums/sho...igh

Sinon fait une recherche avec "Cumul" dans de recherche (dans la barre bleu au-dessu), e slectionne Access. Starec

__________________
irez tout droit dans le

Dtaillez vos questions, sinon vous aurez des rponses erro

et lisez les rgles sinon

Si vous pensez commencer sans un livre, oublier : livre

dbuter Vous pouvez consulter mes articles sur Access et PowerPoin

Le blog Office.

NS

Inutile de m'envoyer un MP pour des que techniques ou de me relancer , je n'y rp pas.

02/04/2007, 12h45

#3

alcabk
Membre habitu

sous la forme d'une requte mise jour a devrait marcher : faire apparatre 2 fois la table dans la fentre de requte, champ : TaTable.debut mise jour : TaTable1.CRD critre : TaTable1.periode=TaTable.periode-1

Inscription : juin 2006 Messages : 174

Points : 146

00

02/04/2007, 13h30

#4

random
Expert Confirm

pouf pouf crd est gale VC(taux;npm;vpm;va;type) et priode est un scalaire

donc
Code : Inscription : mai 2005 Messages : 3 419 Slectionner tout - Visualiser dans une fentre part

Points : 3 768

1 2select priode,priode-1 as priodeprec, 3vc(taux,priode,chance,capital,0) as crd, (taux,priode-1,chance,capital,0) as 4 crdavant devrait aller mais on peut faire
Code : Slectionner tout - Visualiser dans une fentre part

1 2 3SELECT a.priode, a.crd, nz((select max(priode) as perprec from 4 matable where priode <a.priode),0) AS 5prec, 6(select crd from matable where priode=a.priode-1) AS crdav FROM matable AS a; __________________ Elle est pas belle la vie ?

Dernire modification par random ; 02/04/2007 13h56.

00

03/04/2007, 11h00

#5 Citation:

Oceliane
Nouveau Membre du Club

Envoy par random mais on peut faire


Code : Slectionner tout - Visualiser dans une fentre part

tudiant Inscription : mars 2007

1 2 3SELECT a.priode, a.crd, nz((select max(priode) as perprec from 4 matable where priode <a.priode),0) AS 5

Messages : 66

Points : 27

6prec, (select crd from matable where priode=a.priode-1) AS crdav FROM matable AS a; j'ai essay d'adapter cette mthode mes besoins, mais j'ai un petit souci...
Code : Slectionner tout - Visualiser dans une fentre part

1SELECT [INDEX].[periode] AS periode, 2 3nz((select max(priode) from [index] where periode <a.priode),0) AS prec, 4 5(select crd from [marequete] where 6periode=a.periode-1) AS Dbut, 7 8[simulations].[mensualite1P1] AS Mensualite, 9 10Dbut*[simulations].[tauxP1]/12 AS intrts, 11 [mensualite1P1]-intrts AS Amortissement, 12 13Dbut-[Amortissement] AS CRD 14 15FROM [INDEX], simulations, [marequete] as a 16 17WHERE (((nz((select max(periode) as perprec from [marequete] where periode 18 <a.periode),0))=[index].[periode]-1) 19AND ((1)<=[index].[periode]) 20And 21(([simulations].[palier1])>=[index].[periode]) 22And (([simulations].[simID])=1)) ORDER BY [INDEX].[periode]; la table index ne contient qu'une liste de chiffres de 0 1200, et simulations contient les donnes utiles. chaque fois que je fais a, j'ai un message "Rfrence circulaire cause par 'marequete'." et visiblement, ce problme viendrait du "FROM"... on ne peut pas faire appel la requte en cours? je travaille actuellement sous la version 2000 d'access mais je passerait trs prochainement sur la version 2007. a peut tre du a?

00

03/04/2007, 11h08

#6

random
Expert Confirm

pour faire ce que tu fais il faudrait que marequte soit une table remplace
Code : Slectionner tout - Visualiser dans une fentre part

Inscription : mai 2005 Messages : 3 419

1 2FROM [INDEX], simulations, [marequete] as a par

Points : 3 768

Code : Slectionner tout - Visualiser dans une fentre part

1 2FROM [INDEX], simulations, simulations as a

S-ar putea să vă placă și