bonsoir tout le monde
Voila j'ai une table access et j'utilise delphi7, mon problème c'est que je n'arrive pas a faire une addition entre deux champs diffirent dans un DBGrid
je crois que cette image parle bien de mon problème
merci d'avance.
bonsoir tout le monde
Voila j'ai une table access et j'utilise delphi7, mon problème c'est que je n'arrive pas a faire une addition entre deux champs diffirent dans un DBGrid
je crois que cette image parle bien de mon problème
merci d'avance.
Bonjour
Remarques
Un DBGrid n'est pas un Tableur, juste un afficheur
Un problème Base de Données s'expose en donnant une description des tables nécessaires (même simplifiée) et des relations entre celles-ci
sans ma boule de cristal je vois pas de solution
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Merci sergio de me repondre
voila le problème
je veut additioner la valeur de la deuxime ligne, 4eme colonne avec la valeur de la 1ere ligne, 6eme colone
j'ai fait
Edit3.Text:=inttostr(ADOtable1.FieldByName('montant-pro').value+ADOTable1.FieldByName('total').value);
dans ce cas l'addtion ce fait dans le meme enregistrement ( meme ligne du DB Grid) .
et ce que je veux le premier enregistrement du champ('total') + le dexieme enrigistrement du champ (' montant-pro')
merci encore
Je répète que cela n'est pas possible !
sauf bien sur à faire
soit par un SQL , soit par une procedure stockée (mais je crois pas qu'access en soit capable), soit par programmelecture du premier enregistrement
stockage de la valeur de total dans une variable
lecture du 2° enregistrement
calcul
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
+1
Par rapport à ce que tu dit (ajouter de champ numérique d'enregistrement différent) :
Il faut que tu utilise un Stringlist dans lequel tu rangeras tes données, ensuite tu pourra utiliser une colonne pour tes calculs.
Maintenant si ton calcul est sur le même enregistrement c'est une autre histoire.
Merci a tous
Oui c'est le probleme le calcule est sur le meme enregistrement
- si vous ne riez pas
j'ai fait avec deux tables ADO:
1ere table :
2eme table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part edit1.text = inttostr(adotable1.fieldbyname('total').value);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Edit2.Text:=inttostr(ADOTable1.FieldByName('montant-pro').Value); procedure TForm1.Button1Click(Sender: TObject); var a,b : integer; c : Double; begin a:=strtoint(Edit1.Text); b:=strtoint(Edit2.Text); c:= a+b; Edit3.Text:=floattostr(c); end;
est ça marche
mais je ne suis pas satisfait
svp d'autre solution
cela ne dit toujours pas pourquoi il faut ajouter le n°0 au n°1
Y a t'il une relation quelconque entre les deux ?
est-ce systématique ?
La base est-elle bien construite ?
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
????????? tu a vue ton dessin ? tu ajoute un nombre de la ligne 0 avec un nombre de la ligne 1. C'est pas le même enregistrement !!!!!
Soit plus précis STP, si ce n'ai pas sur le meme enregistrement, je t'ai déjà proposé quelquechose.
Maintant si c'est sur le même enregistrement et comme le demande @SERGIO si c'est systématique (ton calcul) alors une simple requete qui te retourne une xième colonne avec le calcul à l'intérieur te suffirais...
le mieux ne serait-il pas de commencer par le commencement ?
c'est à dire :
exposer clairement le problème et le pourquoi de cette opération
décrire correctement la table et son utilisation (et avoir la description de l'existante)
et enfin avoir un jeu de données correctes (car je pense que celle présentée n'est qu'un jeu d'essai mal conçu)
Bref , cela s'appelle faire une "analyse"
Maintenant , je met de l'eau dans mon vin , l'opération d'ajout d'une cellule d'une ligne avec celle d'une autre ligne sur un DBGrid est quand même possible (après tout ce n'est qu'un stringgrid) . Mais je dirais que c'est quand même une horreur
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
@
essai de passer par un ADOQuery :
1) Créer un ADOQuery comme tu as pu créer un ADOTable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 With MonAdoQuery do Begin Sql.Clear; Sql.Add('Select [N°], [Num-pro], [Nom-pro], [montant-Pro], [Num-facture], total, '); Sql.Add('Sum ([montant-pro] + total) As MonCalcul '); Sql.Add('From Table1 '); Try Open; except // Ton message d'erreur au cas où end; end;
1) J'ai mis entre crochet des champs car j'aime pas les champs avec des caractères spécials
2) A toi d'attacher le MonAdoQuery à ton DBgrid
3) relis bien les infos de @Sergio, c'est important l'analyse
vaut mieux travailler coté client Agregate
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager