|
Débuté par REGIS, 21 jan. 2018 21:13 - 13 réponses |
| |
| | | |
|
| |
Membre enregistré 5 messages |
|
Posté le 21 janvier 2018 - 21:13 |
Bonjour à tous,
En se connectant à une BD mysql distante via SQLConnecteWS, comment récupérer le dernier ID d'un champ auto-incrémenté ajoutée à une table ?? La fonction SQLExec("SELECT last_insert_id()","REQ") renvoie systématiquement la valeur zéro
Pourtant, elle fonctionne bien directement sur MySQL. A croire que Windev n'en tient pas compte.
J'ai essayé d'étudier les transactions, mais pas possible sur accès via SQLConnecteWS
Un grand merci à mes sauveurs.. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 897 messages Popularité : +227 (347 votes) |
|
Posté le 22 janvier 2018 - 04:38 |
Bonjour, Peut être quelque chose du style
sTxtReq est une chaîne REQ_MaTableTriée est une Source dede Données
sTxtReq=[ SELECT MaTable.PK_MaTable FROM MaTable ORDER BY PK_MaTable ASC ] HExécuteRequêteSQL(REQ_MaTableTriée,hRequêteDéfaut,sTxtReq) HLitDernier(REQ_MaTableTriée) Plus simple, créer la requête sous l'éditeur et passer par HExécuteRequête -- Il y a peut être plus simple, mais, ça tourneMessage modifié, 22 janvier 2018 - 04:48 |
| |
| |
| | | |
|
| | |
| |
Posté le 22 janvier 2018 - 08:38 |
REGIS a émis l'idée suivante :
Bonjour à tous, En se connectant à une BD mysql distante via SQLConnecteWS, comment récupérer le dernier ID d'un champ auto-incrémenté ajoutée à une table ?? La fonction SQLExec("SELECT last_insert_id()","REQ") renvoie systématiquement la valeur zéro Pourtant, elle fonctionne bien directement sur MySQL. A croire que Windev n'en tient pas compte. J'ai essayé d'étudier les transactions, mais pas possible sur accès via SQLConnecteWS Un grand merci à mes sauveurs.. --- Cet email a fait l'objet d'une analyse antivirus par AVG. http://www.avg.com
Bonjour, nous n'utilisons pas l'accès natif mysql mais les accès alternatifs mais je crois me souvenir qu'en accès natif, même avec des SQLexec on pouvait gérer ce id auto ô combien prépondérant. Je l'ai fait un temps pour un ws soa.
Le pb sans doute c'est que là tu changes de session à chaque fois que tu sollicites sqlconnecteWs, et le rtv_last_insert_id ne renvoie pas le dernier id créé, mais plus exactement le dernier id créé par la session et elle seule.
En fait c'est le sqlconnectews qui devrais te retourner cette info à l'accomplissement d'un ordre insert. Jamais utilisé ce truc. C'est un webservice déjà développé par pcsoft ? avez vous les sources ?
-- Roumegou Eric |
| |
| |
| | | |
|
| | |
| |
Posté le 22 janvier 2018 - 17:47 |
Oui, c'est un Webservice développé par PCSOFT Connecte l'application en cours à une base de données à interroger par SQL en passant par l’intermédiaire d’un proxy Webservice (SOAP).
Bien pratique, une toute petite couche à installer sur le serveur (ici MySQL) |
| |
| |
| | | |
|
| | |
| |
Posté le 22 janvier 2018 - 17:53 |
.. Cela dit, SQLConnecteWS n'est appeler qu'une seule fois au début de la procédure et plus après.
// Connexion Base de données MySQL NumConnexion = SQLConnecteWS("http://xxxxxxx/WDSOAPDB_WEB/","xxx","xxx","passel","xxx","MySQL")
SI NumConnexion <> 0 ALORS // La connexion s'est bien passée Info("Connexion OK") SINON // La connexion a échoué : affichage d'un message explicatif SQLInfoGene() Erreur("La connexion à la source de données " +... " a échoué." + RC + "Code erreur : " + ... SQL.Erreur + RC + SQL.MesErreur) FIN
Requete = "Insert INTO cliccompta.central_societes (cent_soc_nom_rs, cent_soc_siret,cent_soc_ape)" + ... " VALUES ('" + ... Local_Societes.Loc_Soc_Nom_Rs + "', '" + ... Local_Societes.Loc_Soc_SIRET + "', '" + ... Local_Societes.Loc_Soc_APE + "')" Res = SQLExec(Requete, "REQ")
// récupération du dernier ID Requete = "SELECT last_insert_id() as dernid" Res4 = SQLExec(Requete, "REQ4") SI Res4 = Faux ALORS SQLInfoGene("REQ4") Info("Erreur SQL 4 : " + SQL.MesErreur) FIN
SQLPremier("REQ4") SI PAS SQL.EnDehors ALORS ID_Frs = SQLCol("REQ4", 1) FIN
// *****************>>>>>>>>>>>> ID_FRS toujours égal à zéro..... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages Popularité : +30 (92 votes) |
|
Posté le 22 janvier 2018 - 18:14 |
Coucou,
Requête de type INSERT Lors de l'exécution d'une requête de type INSERT, la variable SQL.IdAuto contient l'identifiant automatique ajouté lors du précédent INSERT. Reference: http://doc.pcsoft.fr/fr-FR/?3072007
-- In üs we trust - Autopsie Volume 1 disponible le 01-23 au dépôt de ton armurier.Message modifié, 22 janvier 2018 - 18:15 |
| |
| |
| | | |
|
| | |
| |
Posté le 22 janvier 2018 - 18:33 |
"ÿÿÿÿÿÿÿÿÿÿ" a utilisé son clavier pour écrire :
Oui, c'est un Webservice développé par PCSOFT Connecte l'application en cours à une base de données à interroger par SQL en passant par l’intermédiaire d’un proxy Webservice (SOAP). Bien pratique, une toute petite couche à installer sur le serveur (ici MySQL) --- Cet email a fait l'objet d'une analyse antivirus par AVG. http://www.avg.com
alors ils ont forcément prévu ce retour d'id auto c'est du ba ba sinon ça ne sert à rien leur truc.
-- Roumegou Eric |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages Popularité : +30 (92 votes) |
|
Posté le 22 janvier 2018 - 19:31 |
Coucou,
J'ai essayé d'étudier les transactions, mais pas possible sur accès via SQLConnecteWS
SQLTransaction https://doc.pcsoft.fr/?3072029
-- In üs we trust - Autopsie Volume 1 disponible le 01-23 au dépôt de ton armurier. |
| |
| |
| | | |
|
| | |
| |
Posté le 23 janvier 2018 - 10:46 |
Charly CANDO a écrit :
Coucou, Requête de type INSERT Lors de l'exécution d'une requête de type INSERT, la variable SQL.IdAuto contient l'identifiant automatique ajouté lors du précédent INSERT. Reference: http://doc.pcsoft.fr/fr-FR/?3072007-- In üs we trust - Autopsie Volume 1 disponible le 01-23 au dépôt de ton armurier.
Hello,
Tu l'as testé? J'ai fait l'exercice avec un MySQL et ça ne fonctionne pas! |
| |
| |
| | | |
|
| | |
| |
Posté le 23 janvier 2018 - 10:50 |
Voroltinquo a écrit :
Bonjour, Peut être quelque chose du style sTxtReq est une chaîne REQ_MaTableTriée est une Source dede Données
sTxtReq=[ SELECT MaTable.PK_MaTable FROM MaTable ORDER BY PK_MaTable ASC ] HExécuteRequêteSQL(REQ_MaTableTriée,hRequêteDéfaut,sTxtReq) HLitDernier(REQ_MaTableTriée) Plus simple, créer la requête sous l'éditeur et passer par HExécuteRequête -- Il y a peut être plus simple, mais, ça tourne
Valable uniquement en mono-utilisateur... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 5 messages |
|
Posté le 23 janvier 2018 - 23:36 |
Malheureusement ne fonctionne pas en utilisant sqlconnectews (accès serveur distant) sql.idauto renvoie également zéro.. |
| |
| |
| | | |
|
| | |
| |
Posté le 24 janvier 2018 - 09:35 |
REGIS vient de nous annoncer :
Malheureusement ne fonctionne pas en utilisant sqlconnectews (accès serveur distant) sql.idauto renvoie également zéro..
bonjour,
en faisant une requête multiple ? mysql accepte très bien ce genre de requête mais je ne sais pas si le connecteur est capable de le gérer
szReq est chaine
szReq = [ insert to t_table set colonne1 = 'x', colonne2 = 'y', ...; select last_insert_id(); ] SQLExec(szReq,"REQ")
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 948 messages Popularité : +30 (92 votes) |
|
Posté le 24 janvier 2018 - 19:29 |
Lionel a écrit :
Charly CANDO a écrit : Coucou, Requête de type INSERT Lors de l'exécution d'une requête de type INSERT, la variable SQL.IdAuto contient l'identifiant automatique ajouté lors du précédent INSERT. Reference: http://doc.pcsoft.fr/fr-FR/?3072007-- In üs we trust - Autopsie Volume 1 disponible le 01-23 au dépôt de ton armurier. Hello, Tu l'as testé? J'ai fait l'exercice avec un MySQL et ça ne fonctionne pas!
Non, tu connait mon idée à propose des Ids
-- In üs we trust. Autopsie Volume 1 disponible au dépot de ton armurier: http://www.sitealademande.com/sitealamande/anywhere/depot |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 120 messages Popularité : +13 (15 votes) |
|
Posté le 25 janvier 2018 - 14:43 |
Bonjour,
J'utilise le last_insert_id sur du mysql en accès natif et cela fonctionne correctement. En espérant que cela t'aide.
Mon code est le suivant :
vSrcLast est une Source dede Données
sTxtSql est une chaîne = "INSERT INTO " + _xNomFichier + "(" + vLstCol + ") VALUES (" + vLstVal + ")" HExécuteRequêteSQL(vSrcLast,gConnexion,hRequêteSansCorrection,sTxtSql)
sTxtSql = "SELECT LAST_INSERT_ID()" HExécuteRequêteSQL(vSrcLast,gConnexion,hRequêteSansCorrection,sTxtSql) ALORS HLitPremier(vSrcLast) SI PAS HEnDehors(vSrcLast) ALORS nLastID = HRécupèreRubrique(vSrcLast,1) FIN |
| |
| |
| | | |
|
| | | | |
| | |
|