totob0
Messages postés19Date d'inscriptionjeudi 4 janvier 2007StatutMembreDernière intervention28 novembre 2008
-
31 mars 2007 à 23:24
tilab
Messages postés95Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention26 octobre 2009
-
24 oct. 2007 à 21:15
bonjour,
un problème dans mon projet m'enpeche d'avancer il s'agit donc d'une requete SQL et voici le message d'erreur;
"les chaine ne doivent pas depasser 255 caractères"
et voici la requete:
Form1.Query1.SQL.Clear;
Form1.Query1.DatabaseName:='pizzeria';
Form1.Query1.DataSource:=form8.DataSourceHistorique;
query1.SQL.Add('insert into commandes_produits (num_commandes,num_produits,nom_com_produits,description_com_produits,taille_com_produits,prix_com_produits,num_employes_com_produits,heure_com_produits,quantite_com_produits,num_cli_com_produits)select num_commandes,num_com_produits,nom_commandes,description_commandes,taille_commandes,prix_commandes,num_employes,heure_commandes,quantite_commandes,num_cli_commandes from produits where code_produits='''+edit12.text+'''');
Form1.Query1.Prepared:=true;
Form1.Query1.ExecSQL;
desolé pour la mise en forme mais c'est toute la requete telle qu'elle, que dois-je faire quand elle est trop longue je ne sais pas la couper car ça ne donneras plus le resultats voulu , c'est d'en fait aller enregistrer tout le contenu de la table"commandes " dans une autre table si quelqu'un sait m'aider avec ça ou une autre méthode ça serait très gentil
merçi d'avance et bonne vacances de paques.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 1 avril 2007 à 03:17
Salut,
Les bases de données c'est pas ma spécialité, mais à mon avis, ça ne peut pas passer.
Limitation à 256 caractères + tu ne peux pas fractionner ta requête = mission impossible.
J'ai essayé pour voir avec query1.SQL.Text, la limitation est la même.
Il te faut sans doute trouver une autre approche que Query ? Je laisse la main aux spécialistes du DBE.
totob0
Messages postés19Date d'inscriptionjeudi 4 janvier 2007StatutMembreDernière intervention28 novembre 2008 1 avril 2007 à 13:37
bonjour, je suis toujours au meme niveau, cependant si vous connaissez un autre moyen q'une requete pour enregistrer le contenu d'une table dans une autre faites moi part de celle -ci,
et de mon coté je continu à chercher merçi.
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 2 avril 2007 à 13:33
salut,
je suis très (très) loin d'être un spécialiste DB, mais je veux veux bien essayer de te filer un coup de main.
hum "tout le contenu" un *ça marcherait pas?
pourquoi ne pas faire un insert avec seulement quelques valeurs (colonne), puis faire un update ? (vu que tu as un code_produit que je suppose être une clès principal)
Sinon, une autre solution (sûrement trop compliquée) serrait de nommée des champs avec des abréviation (genre cmd command, prd produit, ...)
aussi, un truc que j'utilise pour simplifier certaines requêtes : les vue . (ie: select stocké côté BD utilisable comme une table). Note que je ne sais pas si ce genre de fct sont disponible sur tout les systèmes de DB.
En espérant t'avoir filer un coup de main et ne pas avoir dit trop de connerie,
Loda
<hr size ="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 novembre 2009 2 avril 2007 à 16:53
Salut,
J'ai eu un cas semblable sur du SQL.....Il faut tronçonner ta requete en plusieurs string...
Puis tu fais un Concat global....que tu appliques....
J'avais pu m'en sortir comme ça
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 novembre 2009 2 avril 2007 à 17:45
Salut,
Tu n'est obligé de passer toute ta requête dans Add, fais le pat étape.......
(c'est un exemple bien sûr)
query1.SQL.Add('SELECT.............');
query1.SQL.Add('FROM.............');
query1.SQL.Add('INNER JOIN.............');
query1.SQL.Add('WHERE.............');
query1.SQL.Add('GROUP BY.............');
Tant que n' pas appliqué Clear, les textes s'empilent à la suite.....
Perso je travaille avec ADO et je dépasse largement les 255 caractères.....
A+
totob0
Messages postés19Date d'inscriptionjeudi 4 janvier 2007StatutMembreDernière intervention28 novembre 2008 4 avril 2007 à 15:28
bonjour à tous je tiens à vous remercier pour votre aide , c'était une situatio compliquée dans laquelle j'étais , mais cependant j'ai trouvé la solution ça pourra aider ce qui seront un jour dans le
meme cas alrs c'est tout simplement ceci;
Form1.Query1.SQL.Clear;
Form1.Query1.DatabaseName:='pizzeria';
Form1.Query1.DataSource:=form8.DataSourceHistorique;
query1.SQL.Add('insert into pizzeria.commandes_produits select *from pizzeria.commandes' );
ou soit ('insert into Nom base de donnée.Table1 select *from Nom base de donnée.Table2' );
Form1.Query1.Prepared:=true;
Form1.Query1.ExecSQL;
encore merçi.
totob0
Messages postés19Date d'inscriptionjeudi 4 janvier 2007StatutMembreDernière intervention28 novembre 2008 4 avril 2007 à 15:32
bonjour les amis encore moi, desolé de vous embetez mais j'ai un autre problème plus complexe maintenant
voici le code source;
Form8.TableHistorique.Refresh;
Form1.Query1.SQL.Clear;
Form1.Query1.DatabaseName:='pizzeria';
Form1.Query1.DataSource:=DatasourceHistorique;
Form1.Query1.SQL.Add('SELECT * FROM commandes_produits ORDER BY num_produits');
Form1.Query1.Active:=true;
Form1.Query1.Open;
il n'ya pas de message d'erreur ou quoi que ce soit d'autre , mais aucune réaction ça ne retourne aucun résultat, le comble c'est que ça marche directement dans la base de données,
mais pas dans le code source de delphi .
help me please...
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 novembre 2009 4 avril 2007 à 15:59
Salut,
avant le Sql.Clear il faut que tu désactive ton objet Form1.Query1.Active = False;
Pourquoi ne pas passer ton DataBaseName et ton DataSource directement sur l'objet ?
A+
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 novembre 2009 5 avril 2007 à 10:39
Salut,
N'ayant pas ton projet sous les yeux, les déductions ne sont pas facile.
Je pense que ton TQuery pointe sur un TDataBase.
Est-il Connected := true;
A+
tilab
Messages postés95Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention26 octobre 20094 24 oct. 2007 à 21:15
salut un peu de mise en forme (la ligne ne doit pas dépasser 255 caractères!)
code:
with Form1 do
begin
with Query1 do
begin
DatabaseName:='pizzeria';
DataSource:=form8.DataSourceHistorique;
with SQL do
begin
Clear;
Text := 'insert into commandes_produits (num_commandes, num_produits, nom_com_produits, ' +
'description_com_produits, taille_com_produits, prix_com_produits, num_employes_com_produits, ' +
'heure_com_produits,quantite_com_produits,num_cli_com_produits) ' +
'select
num_commandes, num_com_produits, nom_commandes, description_commandes, ' +
'taille_commandes, prix_commandes, num_employes, heure_commandes, quantite_commandes, ' +
'num_cli_commandes
from produits where code_produits = ''' + edit12.text + '''';
end;
end;
end;
ta solution est correcte si tes deux tables ont le même ordre des champs!!!!
pour la deuxième question regarde si le database est connecté, si la query pointe vers le database et que le datasource pointe vers la query et que le composant de visualisation pointe vers le datasource.
PS:
Form1.Query1.Active:=true;
Form1.Query1.Open;
ne sert a rien car le faite de Active := True ouvre automatiquement la query ou tu utilises Active := True ou bien Open.
si tu change le Sql.Text la query se ferme automatiquement