Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1958 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  delphi + sql server 2000 + ADO

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

delphi + sql server 2000 + ADO

n°1919736
atlas56
salam oualikoum
Posté le 31-08-2009 à 05:34:36  profilanswer
 

bonjour;
je suis entrain de réaliser une appliacation en delphi en utilisant :
delphi7 sql server 2000   le lient avec la bese de données 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.
 
Quelqu’un peut m'aider.
end;


Message édité par atlas56 le 04-09-2009 à 19:26:40

---------------
Il y a que le timide et le prétention qui n'apprennent pas  
mood
Publicité
Posté le 31-08-2009 à 05:34:36  profilanswer
 

n°1920153
antac
..
Posté le 01-09-2009 à 09:57:45  profilanswer
 

Il t'affiche quoi comme message d'erreur déjà.

n°1920749
atlas56
salam oualikoum
Posté le 03-09-2009 à 02:20:53  profilanswer
 

le probleme  c'est la date . le message d'erreur affiché est comme suite :
" l'application utilise une valeur d'un type incorrecte pour 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]+date1[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
n°1920750
atlas56
salam oualikoum
Posté le 03-09-2009 à 02:29:30  profilanswer
 

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
n°1920867
antac
..
Posté le 03-09-2009 à 10:34:08  profilanswer
 

SET DATEFORMAT MYD //Change le format de date  
 
SELECT CAST('03/1987/21' AS DATETIME) //Cast au format datetime

n°1920916
atlas56
salam oualikoum
Posté le 03-09-2009 à 14:45:20  profilanswer
 

vous pouvez donner plus d'explication avec un exemple si c'et possible (adoquery)

n°1920918
atlas56
salam oualikoum
Posté le 03-09-2009 à 14:48:32  profilanswer
 

adoquery.sql.add('?????????? ');

n°1920920
antac
..
Posté le 03-09-2009 à 14:57:09  profilanswer
 

Essayes avec adoquery.sql.add mais c'est pas sur que ça marche.
Ce que je faisais à l'époque où je développais en Delphi pour ce genre de cas c'était de créer une storeproc SQL Server qui prenait en paramètre ce que tu passes à ta requête. 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 à redéployer mon application.


Message édité par antac le 03-09-2009 à 14:58:41
n°1920922
atlas56
salam oualikoum
Posté le 03-09-2009 à 14:58:37  profilanswer
 

vous parlez de sql server query analizer c'est ce que je fais seulement je ne sais pas comment charger les requet que je réalise 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 données(crée 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
n°1920924
antac
..
Posté le 03-09-2009 à 15:00:24  profilanswer
 

gné ?

mood
Publicité
Posté le 03-09-2009 à 15:00:24  profilanswer
 

n°1920929
atlas56
salam oualikoum
Posté le 03-09-2009 à 15:18:48  profilanswer
 

oui il existe un composant ADOStoredProc (je vien de lire l'aide delphi)
TADOStoredProc encapsule une procédure stockée d'une base de données ADO

n°1921046
antac
..
Posté le 03-09-2009 à 20:45:04  profilanswer
 

Voilà, à partir de là tu crée une storeproc dans SQL Server avec les SET et tu appelles cette storeproc avec les paramètres que tu veux depuis Delphi

n°1921113
atlas56
salam oualikoum
Posté le 04-09-2009 à 02:22:27  profilanswer
 

merci pour votre aide , je vais essayé de faire ces (storeproc) en sql server 2000.

n°1921481
atlas56
salam oualikoum
Posté le 05-09-2009 à 02:50:00  profilanswer
 

bonjour ;
j'ai crée 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 détécte 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
n°1921600
antac
..
Posté le 06-09-2009 à 09:57:22  profilanswer
 

Tu n'as pas a enregistrer en quoi que ce soit ta procédure. Tu crées ta procédure stockée sous SQL Server, ta procédure sera listé dans le ADOStoredProc pour peu que tu l'as bien lier à la base de données.
 
A partir de là tu peux l'utiliser comme ça.

n°1921972
atlas56
salam oualikoum
Posté le 07-09-2009 à 18:44:18  profilanswer
 

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

n°1922079
antac
..
Posté le 08-09-2009 à 08:46:58  profilanswer
 

Comme leurs noms l'indique, ce sont des procédures stockées, ces dites procédures sont stockées dans ta base de données directement au même 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
n°1922811
atlas56
salam oualikoum
Posté le 10-09-2009 à 06:05:50  profilanswer
 

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.

n°1922827
antac
..
Posté le 10-09-2009 à 08:55:17  profilanswer
 

J'en suis ravi.

n°1924113
atlas56
salam oualikoum
Posté le 15-09-2009 à 04:12:06  profilanswer
 

bonjour;
 
j'ai crée une table sur sql server 2000 avec une clef auto-increment , aprés 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
n°1924155
antac
..
Posté le 15-09-2009 à 10:38:11  profilanswer
 

TRUNCATE TABLE maTable;
 
Ca va tout te virer et remettre l'autoincrémentation
 
P.S.
 
Une recherche sur google t'aurait donné la solution très vite...


Message édité par antac le 15-09-2009 à 10:38:44
n°1924396
atlas56
salam oualikoum
Posté le 16-09-2009 à 06:55:26  profilanswer
 

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 débrouille pas bien en anglais.

n°1924446
antac
..
Posté le 16-09-2009 à 11:00:10  profilanswer
 

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

n°1924696
atlas56
salam oualikoum
Posté le 17-09-2009 à 06:01:17  profilanswer
 

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 français.
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 référencée 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
n°1924706
antac
..
Posté le 17-09-2009 à 08:44:26  profilanswer
 

C'est ce qu'on appelle une "contrainte d'intégrité référentielle" ;)

n°1924983
atlas56
salam oualikoum
Posté le 18-09-2009 à 09:23:34  profilanswer
 

antac a écrit :

C'est ce qu'on appelle une "contrainte d'intégrité référentielle" ;)


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('@ind').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 opération sur un ensomble de données 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.
 

n°1924987
antac
..
Posté le 18-09-2009 à 09:32:16  profilanswer
 

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

n°1924996
atlas56
salam oualikoum
Posté le 18-09-2009 à 10:04:08  profilanswer
 

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, :par_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.

n°1925212
atlas56
salam oualikoum
Posté le 19-09-2009 à 12:13:22  profilanswer
 

bonjour;
 
(j'utilise sql server 2000 developer edition)
j'ai essayé d'autres procedures il m'afiche toujours le même message d'erreur  
ADOStoredProc1: impossible d'éffectuer cette opération sur un ensomble de données 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
n°1925296
antac
..
Posté le 20-09-2009 à 01:05:07  profilanswer
 

C'est pas coté SQL Server, c'est coté Delphi ton problème.
 
C'est pas ExecSQL que tu dois faire mais Open et lier le datasource de ton adoquery à un composant permettant de visualiser le résultat de ta requête.

n°1925301
atlas56
salam oualikoum
Posté le 20-09-2009 à 01:42:03  profilanswer
 

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 opération sur un ensomble de données 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 idée???
 
salutations.


Message édité par atlas56 le 20-09-2009 à 01:51:13
n°1925332
antac
..
Posté le 20-09-2009 à 14:59:52  profilanswer
 

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


Message édité par antac le 20-09-2009 à 15:00:29
n°1954485
atlas56
salam oualikoum
Posté le 02-01-2010 à 19:01:36  profilanswer
 

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 opération sur un ensomble de données 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 idée???  
 
salutations.

n°1958901
antac
..
Posté le 20-01-2010 à 09:00:13  profilanswer
 

Enlève  
DataModule3.ADOStoredProc1.ExecProc;  

n°1972077
atlas56
salam oualikoum
Posté le 08-03-2010 à 20:49:00  profilanswer
 

bonjour;
ca marche avec ça:
DataModule3.ADOConnection1.Open('passe','nom_util');  
DataModule3.ADOStoredProc1.ProcedureName:='nome proc';  
DataModule3.ADOStoredProc1.close;  
DataModule3.ADOStoredProc1.open;  
DataModule3.ADOStoredProc1.Parameters.ParamByName('@ind1').Value:=edit1.text;
DataModule3.ADOStoredProc1.Parameters.ParamByName('@ind1').Value:=edit1.text;  
...............................................................................................................
DataModule3.ADOStoredProc1.Parameters.ParamByName('@ind(n)').Value:=edit(n).text;      
DataModule3.ADOStoredProc1.Active:=false;  
DataModule3.ADOStoredProc1.Active:=true;
 
salutations

n°1972182
antac
..
Posté le 09-03-2010 à 11:30:15  profilanswer
 

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:=edit1.text;  
...............................................................................................................
DataModule3.ADOStoredProc1.Parameters.ParamByName('@ind(n)').Value:=edit(n).text;      
DataModule3.ADOStoredProc1.Active:=true;

n°1972467
atlas56
salam oualikoum
Posté le 10-03-2010 à 01:30:02  profilanswer
 

Je ne vois pas pour quoi t’es sur la défensive, peut être parce que vous m’avez aide sur aucun des problèmes que j’ai posé, vous les français !!! si seulement vous pouvez voir a quel point vous étés hypocrites, mais ça vous voisins européens n’arrête pas de vous le dire.
Quelqu’un a dit « dieu a crée la France ensuite il a créé les français »  a dire vrai c’est les anglais qui disent ça.  

n°1972476
antac
..
Posté le 10-03-2010 à 08:44:13  profilanswer
 

Je ne vois pas en quoi je suis sur la défensive vu que personne ne m'a attaqué.
De plus, je ne vois aucun rapport ni sur ma nationalité ni sur la tienne.
 
Ensuite, ce n'est pas de l'hypocrisie que de dire que ton code n'a aucune logique, quand à l'extrapolation européenne... je n'en parle même pas...
 
Bref

n°1972502
Modération
Posté le 10-03-2010 à 09:47:51  answer
 

atlas56 a écrit :

Je ne vois pas pour quoi t’es sur la défensive, peut être parce que vous m’avez aide sur aucun des problèmes que j’ai posé, vous les français !!! si seulement vous pouvez voir a quel point vous étés hypocrites, mais ça vous voisins européens n’arrête pas de vous le dire.
Quelqu’un a dit « dieu a crée la France ensuite il a créé les français »  a dire vrai c’est les anglais qui disent ça.  


Tu peux m'expliquer ce délire relatif à la nationalité ? Qu'est ce que ça vient faire ici ?  Antac t'as juste fait remarquer que ton code était illogique et mal construit, et t'as fourni une solution plus élégante, et toi tu le traites d'hypocrite et tu délires sur la nationalité et tout... Faut arréter la fumette hein !

n°1972829
atlas56
salam oualikoum
Posté le 11-03-2010 à 00:22:06  profilanswer
 

Modération a écrit :


Tu peux m'expliquer ce délire relatif à la nationalité ? Qu'est ce que ça vient faire ici ?  Antac t'as juste fait remarquer que ton code était illogique et mal construit, et t'as fourni une solution plus élégante, et toi tu le traites d'hypocrite et tu délires sur la nationalité et tout... Faut arréter la fumette hein !


Allez vous faire foutre les français,  « quand à l'extrapolation européenne... je n'en parle même pas... » Vaux mieux pour toi.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  delphi + sql server 2000 + ADO

 

Sujets relatifs
[Delphi] Interface graphique : comment faire ?[Access 2000] Limite Champs "Memo"
SQL Server management[RESOLU] Acc. 2000 Export XL : contourner la limite de 255 caractères
Tutoriel et videos sur Visual studio 2008 et sql server 2008$_SERVER['PHP_AUTH_USER']
[Sql Server 2005] Au secours on sature ![Access 2000] Fct Vrai-Faux erreurs
Delphi 2009[SQL Server 2005 & TRIGGER] Exécuter une proc stock automatiquement
Plus de sujets relatifs à : delphi + sql server 2000 + ADO


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR