Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insert Into avec n° incrémenté

3 réponses
Avatar
Isa
Bonjour,

Je ne sais pas si ce que je souhaite faire est techniquement possible.
Je vous explique :
Je dois importer des données et j'ai une liste de clients avec leurs
factures associées.
J'importe les clients dans la table client et ensuite j'importe les factures
dans la table facture pour chaque client. (avec un insert into global pour
toutes les factures du client).
Sauf que j'ai un champ fact_num qui est incrémenté par client donc :
Client 1 Num_fact 1, 2, 3 ...
Client 2 Num_fact 1, 2, 3 ...

Par contre, j'ai également un n° unique de facture sur chaque facture.

Bref donc, mon insert into ressemble à cela :
SQL = "SELECT * FROM Clients"

Set R = connexion.Execute(SQL)

If Not R.EOF Then

Do While Not R.EOF

' Création du fact_num (incrémenté suivant le nombre de
facture par client)
SQL_where = "client_num_auto = " & R("client_num_auto")

v_num_fact = creation_num_ordre("fact_num", "facture",
SQL_where)


' IMPORT DES DONNEES FACTURE DU CLIENT
SQL = "INSERT INTO facture (client_num_auto, fact_num,
...) SELECT Client.client_num_auto, " _
& v_num_fact & ", ...

connexion.Execute (SQL)

R.MoveNext
Loop

End If

Ma fonction creation_num_ordre fonctionne très bien mais dans ce cas ne
s'incrémente pas puisque j'insère toutes les factures en même temps. Il
insère x lignes de facture avec le n° fact 1 alors que je voudrais la 1ère
avec le n°1, la 2ème avec le n°2...

Avez-vous une idée de comment je peux faire ?
Merci de vos réponses.

Isa.

3 réponses

Avatar
Dragan
Bonjour Isa, je ne comprends pas ce que contient la table clients ?
les clients et leurs factures ?

Bref, l'idée est de créer une boucle qui importe les factures une par une ce
qui permettra d'incrémenter le n° facture du client automatiquement à chaque
tour de boucle.
Une solution est d'importer dans la table FACTURES la première facture du
client qui ne se trouve pas déjà dans la table FACTURES.



"Isa" a écrit :

Bonjour,

Je ne sais pas si ce que je souhaite faire est techniquement possible.
Je vous explique :
Je dois importer des données et j'ai une liste de clients avec leurs
factures associées.
J'importe les clients dans la table client et ensuite j'importe les factures
dans la table facture pour chaque client. (avec un insert into global pour
toutes les factures du client).
Sauf que j'ai un champ fact_num qui est incrémenté par client donc :
Client 1 Num_fact 1, 2, 3 ...
Client 2 Num_fact 1, 2, 3 ...

Par contre, j'ai également un n° unique de facture sur chaque facture.

Bref donc, mon insert into ressemble à cela :
SQL = "SELECT * FROM Clients"

Set R = connexion.Execute(SQL)

If Not R.EOF Then

Do While Not R.EOF

' Création du fact_num (incrémenté suivant le nombre de
facture par client)
SQL_where = "client_num_auto = " & R("client_num_auto")

v_num_fact = creation_num_ordre("fact_num", "facture",
SQL_where)


' IMPORT DES DONNEES FACTURE DU CLIENT
SQL = "INSERT INTO facture (client_num_auto, fact_num,
...) SELECT Client.client_num_auto, " _
& v_num_fact & ", ...

connexion.Execute (SQL)

R.MoveNext
Loop

End If

Ma fonction creation_num_ordre fonctionne très bien mais dans ce cas ne
s'incrémente pas puisque j'insère toutes les factures en même temps. Il
insère x lignes de facture avec le n° fact 1 alors que je voudrais la 1ère
avec le n°1, la 2ème avec le n°2...

Avez-vous une idée de comment je peux faire ?
Merci de vos réponses.

Isa.


Avatar
Isa
Merci de votre réponse.
Oui, j'ai bien 2 tables : client et facture.

J'y ai bien pensé d'importer une facture par une facture pour pouvoir
incrémenté mon n° à chauqe fois mais je trouve ça bête de passer x fois dans
la boucle alors qu'on peut tout importer en une seule fois.


"Dragan" wrote:

Bonjour Isa, je ne comprends pas ce que contient la table clients ?
les clients et leurs factures ?

Bref, l'idée est de créer une boucle qui importe les factures une par une ce
qui permettra d'incrémenter le n° facture du client automatiquement à chaque
tour de boucle.
Une solution est d'importer dans la table FACTURES la première facture du
client qui ne se trouve pas déjà dans la table FACTURES.



"Isa" a écrit :

> Bonjour,
>
> Je ne sais pas si ce que je souhaite faire est techniquement possible.
> Je vous explique :
> Je dois importer des données et j'ai une liste de clients avec leurs
> factures associées.
> J'importe les clients dans la table client et ensuite j'importe les factures
> dans la table facture pour chaque client. (avec un insert into global pour
> toutes les factures du client).
> Sauf que j'ai un champ fact_num qui est incrémenté par client donc :
> Client 1 Num_fact 1, 2, 3 ...
> Client 2 Num_fact 1, 2, 3 ...
>
> Par contre, j'ai également un n° unique de facture sur chaque facture.
>
> Bref donc, mon insert into ressemble à cela :
> SQL = "SELECT * FROM Clients"
>
> Set R = connexion.Execute(SQL)
>
> If Not R.EOF Then
>
> Do While Not R.EOF
>
> ' Création du fact_num (incrémenté suivant le nombre de
> facture par client)
> SQL_where = "client_num_auto = " & R("client_num_auto")
>
> v_num_fact = creation_num_ordre("fact_num", "facture",
> SQL_where)
>
>
> ' IMPORT DES DONNEES FACTURE DU CLIENT
> SQL = "INSERT INTO facture (client_num_auto, fact_num,
> ...) SELECT Client.client_num_auto, " _
> & v_num_fact & ", ...
>
> connexion.Execute (SQL)
>
> R.MoveNext
> Loop
>
> End If
>
> Ma fonction creation_num_ordre fonctionne très bien mais dans ce cas ne
> s'incrémente pas puisque j'insère toutes les factures en même temps. Il
> insère x lignes de facture avec le n° fact 1 alors que je voudrais la 1ère
> avec le n°1, la 2ème avec le n°2...
>
> Avez-vous une idée de comment je peux faire ?
> Merci de vos réponses.
>
> Isa.


Avatar
Michel__D
Bonjour,

Isa a écrit :
Bonjour,

Je ne sais pas si ce que je souhaite faire est techniquement possible.
Je vous explique :
Je dois importer des données et j'ai une liste de clients avec leurs
factures associées.
J'importe les clients dans la table client et ensuite j'importe les factures
dans la table facture pour chaque client. (avec un insert into global pour
toutes les factures du client).
Sauf que j'ai un champ fact_num qui est incrémenté par client donc :
Client 1 Num_fact 1, 2, 3 ...
Client 2 Num_fact 1, 2, 3 ...

Par contre, j'ai également un n° unique de facture sur chaque facture.

Bref donc, mon insert into ressemble à cela :
SQL = "SELECT * FROM Clients"

Set R = connexion.Execute(SQL)

If Not R.EOF Then

Do While Not R.EOF

' Création du fact_num (incrémenté suivant le nombre de
facture par client)
SQL_where = "client_num_auto = " & R("client_num_auto")

v_num_fact = creation_num_ordre("fact_num", "facture",
SQL_where)


' IMPORT DES DONNEES FACTURE DU CLIENT
SQL = "INSERT INTO facture (client_num_auto, fact_num,
....) SELECT Client.client_num_auto, " _
& v_num_fact & ", ...

connexion.Execute (SQL)

R.MoveNext
Loop

End If

Ma fonction creation_num_ordre fonctionne très bien mais dans ce cas ne
s'incrémente pas puisque j'insère toutes les factures en même temps. Il
insère x lignes de facture avec le n° fact 1 alors que je voudrais la 1ère
avec le n°1, la 2ème avec le n°2...

Avez-vous une idée de comment je peux faire ?
Merci de vos réponses.



Et si je ne suis pas indiscret, il te sert à quoi ce numéro de facture
supplémentaire lié à chaque client ?