Probleme avec les DELETE en sql ... :( [Delphi] - Programmation
Marsh Posté le 09-01-2002 à 13:39:44
Déjà tu nous fait pas chier
pour ton pb je regarde ce que je peux faire....
Marsh Posté le 09-01-2002 à 13:44:25
c'est pas le caractère "°" qui chie dans la requete ?
Faudrait tester ta requete dans ton client sql, avant de bidouiller ton code.
BOn c juste une idée comme ca ... conné pas trop delphi
Marsh Posté le 09-01-2002 à 13:46:59
Bon essaye déjà ça :
RequeteSuppr.SQL.Clear;
RequeteSuppr.SQL.Add('Delete from Inscriptions where ((N°Client = :numinscr ) and (N°plongee = :numplong ))' );
RequeteSuppr.Params[0].AsInteger := clientpresent.Fields[0].Value;
RequeteSuppr.Params[1].AsInteger := selecplongee.KeyValue;
RequeteSuppr.ExecSQL;
Et si tu pouvais donner le message d'erreur en entier
Marsh Posté le 09-01-2002 à 13:52:07
ca marche pas non plus
et le message C :
"Access violation at adress 004B9C57 in module 'project1.exe'. Read adress 00000000. process stopped..."
On comprends pas
Surtout que les paramètres sont bons (on les checke en temps réel via des Tedit... )
Marsh Posté le 09-01-2002 à 13:53:26
Tetedeiench a écrit a écrit : Read adress 00000000. |
un pointeur vide
genre objet.propriété si objet = nil
Marsh Posté le 09-01-2002 à 13:55:14
Tetedeiench a écrit a écrit : ca marche pas non plus et le message C : "Access violation at adress 004B9C57 in module 'project1.exe'. Read adress 00000000. process stopped..." On comprends pas Surtout que les paramètres sont bons (on les checke en temps réel via des Tedit... ) |
Erreur mémoire....
TQuery est créée ?
(RequeteSuppr := TQuery.Create(self); // ou un truc du genre)
Mode debug en pas à pas sur quelle ligne ça plante ?
Marsh Posté le 09-01-2002 à 14:00:39
RequeteSuppr est créé ... Je vois le composant Tquery sur ma form nommé requetesuppr... la form ou se déroule tout l'algo d'ailleurs (j'ai aps oublié de caster la bonne form en gros).
Et il ne nous propose pas le mode debug comme avant , ni le pas a pas (pas de case a cocher ) DOnc on ne peut pas te le dire...
Et comme il sélectionne aucune ligne (C ca qui est chelou) ben...
On sait juste que ca plante dans les instructions si dessus...
On est cependant SUR des valeurs des paramètres (ca passe dans un Tedit : clientpresent.Fields[0].Value et selecplongee.KeyValue
[edtdd]--Message édité par Tetedeiench--[/edtdd]
Marsh Posté le 09-01-2002 à 14:03:33
Tetedeiench a écrit a écrit : Et il ne nous propose pas le mode debug comme avant , ni le pas a pas (pas de case a cocher ) DOnc on ne peut pas te le dire... Et comme il sélectionne aucune ligne (C ca qui est chelou) ben... On sait juste que ca plante dans les instructions si dessus... On est cependant SUR des valeurs des paramètres (ca passe dans un Tedit : clientpresent.Fields[0].Value et selecplongee.KeyValue |
Si si y a mode debug, heureusement
Tu fous 1 point d'arret sur RequeteSuppr.SQL.Clear; et pas à pas
Et tu donnes ligne où ça merde
Marsh Posté le 09-01-2002 à 14:05:09
G un doute là....
RequeteSuppr.SQL.Clear;
RequeteSuppr.SQL.Add('Delete from Inscriptions where (N°Client = :N°Client) and (N°plongee = :N°plongee)';
RequeteSuppr.Params[0].AsInteger := clientpresent.Fields[0].Value;
RequeteSuppr.Params[1].AsInteger := selecplongee.KeyValue;
RequeteSuppr.ExecSQL;
Essaye ça....
Tu test texto j'espere
Marsh Posté le 09-01-2002 à 14:14:38
La ligne qui merde c'est celle la :
RequeteSuppr.Params[0].AsInteger := clientplongee.Fields[0].AsInteger;
Pourtant, si je fais :
Edit1.Text := IntToStr(clientplongee.Fields[0].AsInteger);
Ca passe, on renvoie bien le numéro du client (on s'était planté de table en faisant du debug en fait )
Donc en gros :
Code :
|
Ca merde sur la ligne avec params[0] , qu'on mette un string ou un integer...
Marsh Posté le 09-01-2002 à 14:21:09
ok
selecplongee C quoi ?
RequeteSuppr.Active := False;
RequeteSuppr.SQL.Clear;
RequeteSuppr.SQL.Add('Delete from Inscriptions where (N°Client = :N°Client) and (N°plongee = :N°plongee)';
RequeteSuppr.Params[0].AsInteger := clientpresent.Fields[0].Value;
RequeteSuppr.Params[1].AsInteger := selecplongee.KeyValue;
RequeteSuppr.ExecSQL;
Marsh Posté le 09-01-2002 à 14:30:41
C un DBlookupComboBox
Marsh Posté le 09-01-2002 à 14:34:20
ok donc selecplongee.KeyValue est un variant
Essaye :
RequeteSuppr.Active := False;
RequeteSuppr.SQL.Clear;
RequeteSuppr.SQL.Add('Delete from Inscriptions where (N°Client = :N°Client) and (N°plongee = :N°plongee)';
RequeteSuppr.Params[0].AsInteger := clientpresent.Fields[0].Value;
RequeteSuppr.Params[1] := selecplongee.KeyValue;
RequeteSuppr.ExecSQL;
[edtdd]--Message édité par [SDF]Poire--[/edtdd]
Marsh Posté le 09-01-2002 à 14:41:48
kif kif
rien changé ...
je me demande si C pas une merde de query qui ne peux écrire dans une table ou autre...
ma table est pourtant ouverte en écriture (readonly = false )
[edtdd]--Message édité par Tetedeiench--[/edtdd]
Marsh Posté le 09-01-2002 à 14:57:50
Tu vas rire mais
RequeteSuppr.Active := False;
RequeteSuppr.SQL.Clear;
RequeteSuppr.SQL.Add('Delete from Inscriptions where (N°Client = :N°Client) and (N°plongee = :N°plongee)';
RequeteSuppr.Params[0].AsInteger := clientpresent.Fields[0].Value;
RequeteSuppr.Params[1].AsInteger := selecplongee.KeyValue;
RequeteSuppr.ExecSQL;
Chez moi ça marche....
Marsh Posté le 09-01-2002 à 15:01:03
Ben alors la, j'en perds mon latin
Marsh Posté le 09-01-2002 à 15:04:59
Enfin G surement pas exactement la même chose que toi....
Là si tu m'envois pas un chtit projet de test G bien peur de ne pas pouvoir t'aider +...
Marsh Posté le 09-01-2002 à 15:08:01
tu va rire, mais quand je remplace :
RequeteSuppr.Params[0].AsInteger := clientpresent.Fields[0].Value;
par
RequeteSuppr.Params[0].AsInteger := 6;
Ou le client 6 est celui qu'on veux jarter, ben...
CA PASSE BOURDAIL !
Marsh Posté le 09-01-2002 à 15:11:06
tiens, IntToStr(6) marche pas.
Marsh Posté le 09-01-2002 à 15:11:06
lllllllllllol tu m'as pas filé la bonne ligne.... (C 1 peu ma faute.... aprés le message d'erreur en debug on est sur la ligne d'apres le message.....)
Ok je regarde
Marsh Posté le 09-01-2002 à 15:13:15
RequeteSuppr.Params[0].AsInteger := clientpresent.Fields[0].AsInteger;
Marsh Posté le 09-01-2002 à 15:19:46
non plus.
On a essayé de récupérer clientpresent.Fields[0] de toutes les manières qu'on connaissais, a chaque fois ca fais l'erreur delamaur...
Avant la requete, apres la requete, ca merde
Marsh Posté le 09-01-2002 à 15:21:23
Pourquoi ca amrche avec l'autre DBgrid alors ??????????????????????????????
Perdu le iench, perdu
Marsh Posté le 09-01-2002 à 15:23:35
C pas le nom (on vient de tenter en le zappant).
Marsh Posté le 09-01-2002 à 15:26:17
Faut aller à la SPA
Doit y avoir une couille dans les options de la DBGrid ou de la table.....
Envois un chtit projet avec les bases (petite les bases) en racine
Marsh Posté le 09-01-2002 à 15:49:48
peux pas vu le merdier que c'est
On va finir par trouver ! (je me demande si ce n'est pas aprce que on essaie d'effacer le champ via des champs non clés ... )
Je vais essayer de récup le merdier via autre chose... en ajoutant le champ dans la requezte par exemple...
Marsh Posté le 09-01-2002 à 16:04:27
on y arrive paaaaaaaaas
Marsh Posté le 09-01-2002 à 16:17:31
Edit1.Text := IntToStr(TDBGrid(Source).Fields[TDBGrid(Source).SelectedIndex].AsInteger);
Meme CA ca passe pas, comme si il arrivait pas a sélectionner dans la Dbgrid !
Pourant celle d'a coté (qui marche) et celle la n'ont AUCUNE différence (on viens de comparer leurs propriétés... )
Marsh Posté le 09-01-2002 à 16:19:58
Edit1.Text := TDBGrid(Source).Fields[TDBGrid(Source).SelectedIndex].AsString;
Marsh Posté le 09-01-2002 à 16:20:39
dit tu fais un test pour savoir si Source C bien un TDBGrid ?
Marsh Posté le 09-01-2002 à 16:26:55
tu fais ca comment ?
Marsh Posté le 09-01-2002 à 16:28:10
pis C pas ca d'ailleurs...
Vu qu'on y allait cash au début via clientplongee...
Marsh Posté le 09-01-2002 à 16:56:18
ON A TROUVAI !
La solution, c'était rebooter le PC.
Pas mal delphi !
Marsh Posté le 09-01-2002 à 17:00:38
Eh si t'avais pas écris n'importe où dans la mem hein
Marsh Posté le 09-01-2002 à 17:16:39
Sinon, une erreur "Error creating cursor handle" , ca peut venir de koi ? (apres une requete )
Marsh Posté le 09-01-2002 à 17:29:10
non ben cai bon j'ai réussi
Marsh Posté le 09-01-2002 à 17:37:41
Tetedeiench a écrit a écrit : non ben cai bon j'ai réussi |
G même pas vu la question
Marsh Posté le 09-01-2002 à 13:23:37
C'est encore moi !
Désolé de vous faire chier, mais on a un probleme un peu... Chiant sur les bras.
On veut faire une requete SQL effacant une occurence d'une table... Rien de bien méchant.
la table est ouverte en lecture/ecriture (readonly = FALSE )
Et pourtant, Delphi nous balance une erreur style " Acces violation blabla ..."
Voila le code :
RequeteSuppr est du type 'Tquery' et on a vérifié 15 fois le type des paramètres : ils sont bons... C bien des integer.
Selecplongée est un TDBLookupComboBox et SelecClient une DBGrid.
Vous avez une idée ?
Merci d'avance !
---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !