|
Iniciado por REGIS, jan., 21 2018 9:13 PM - 13 respostas |
| |
| | | |
|
| |
Membro registado 5 mensagems |
|
Publicado em janeiro, 21 2018 - 9:13 PM |
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.. |
| |
| |
| | | |
|
| | |
| |
Membro registado 3.890 mensagems Popularité : +227 (347 votes) |
|
Publicado em janeiro, 22 2018 - 4:38 AM |
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 tourneMensagem modificada, janeiro, 22 2018 - 4:48 AM |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 22 2018 - 8:38 AM |
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 |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 22 2018 - 5:47 PM |
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) |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 22 2018 - 5:53 PM |
.. 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..... |
| |
| |
| | | |
|
| | |
| |
Membro registado 948 mensagems Popularité : +30 (92 votes) |
|
Publicado em janeiro, 22 2018 - 6:14 PM |
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.Mensagem modificada, janeiro, 22 2018 - 6:15 PM |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 22 2018 - 6:33 PM |
"ÿÿÿÿÿÿÿÿÿÿ" 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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 948 mensagems Popularité : +30 (92 votes) |
|
Publicado em janeiro, 22 2018 - 7:31 PM |
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. |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 23 2018 - 10:46 AM |
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! |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 23 2018 - 10:50 AM |
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... |
| |
| |
| | | |
|
| | |
| |
Membro registado 5 mensagems |
|
Publicado em janeiro, 23 2018 - 11:36 PM |
Malheureusement ne fonctionne pas en utilisant sqlconnectews (accès serveur distant) sql.idauto renvoie également zéro.. |
| |
| |
| | | |
|
| | |
| |
Publicado em janeiro, 24 2018 - 9:35 AM |
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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 948 mensagems Popularité : +30 (92 votes) |
|
Publicado em janeiro, 24 2018 - 7:29 PM |
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 |
| |
| |
| | | |
|
| | |
| |
Membro registado 120 mensagems Popularité : +13 (15 votes) |
|
Publicado em janeiro, 25 2018 - 2:43 PM |
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 |
| |
| |
| | | |
|
| | | | |
| | |
|