fredieuric
Messages postés24Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention 2 octobre 2008
-
18 juil. 2002 à 13:16
Jerrymcfly
Messages postés29Date d'inscriptionvendredi 8 mars 2002StatutMembreDernière intervention26 juillet 2002
-
18 juil. 2002 à 16:02
Salut,
Juste une ptit question avec access:
j ai besoin d un outil qui me permette d effacer un enregistrement.
Je saisi le nom de la piece a supprimer avec une InputBox (Ca, je sais faire :) !).
Je veux ensuite parcourir les enregistrements du premier champ de chacune de mes tables (qui contient le nom des differentes pieces de ma base de donnee), pour ensuite pouvoir effacer l enregistrement dont le nom est celui qui a ete saisi au debut. En fait, c est la que ca se gatte!
Si qq1 peut m aider, il recevra en echange mon etrernelle reconnaissance !
Jerrymcfly
Messages postés29Date d'inscriptionvendredi 8 mars 2002StatutMembreDernière intervention26 juillet 2002 18 juil. 2002 à 13:53
Salut,
Tu sais, on débute tous un jour ou l'autre... personellement, je ne passerai pas par un "inputbox" pour supprimer une enregistrement, mais si c'est ton choix, je veux bien t'aider dans ce sens.
alors va pour l'inputbox :-)
Je suppose que l'utilisateur tape la valeur d'une clé de ta table, sinon c'est la foire... (a moins que tu veuilles supprimer tous les enregistrement qui correspondent à la saisie).
TexteSaisi = InputBox ("Quel enregistrement voulez-vous supprimer ?")Set SELECTION CurrentDB.OpenRecorset("SELECT * FROM MA_TABLE WHERE [MA_TABLE].MON_CHAMP '" & TexteSaisi & "'", DB_OPEN_DYNASET) 'ou DBOpen_dynaset pour 97 (je cois mas je suis pas sur)
SELECTION.MoveFirst
If SELECTION.Eof then 'pas trouvé
MsgBox "Pas d'enregistrement"
Exit sub 'ou fonction selon ou tu mets ton code
End If
If MsgBox("T'es sur de vouloir bouziller la ligne ?", vbYesNo) = vbYes Then
SELECTION.Delete
Msgbox "Supprimé"
End If
c'est une façon pas compliquée, pour que tu comprennes si tu débutes. Evidemment il y a mieux à faire pour suprimmer un enregistrement.
Si c'est pas clair ou si tu veux une meilleur methode, n'hésites pas ça sera avec plaisir
fredieuric
Messages postés24Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention 2 octobre 20081 18 juil. 2002 à 14:23
Merci pour la rapidite!
Deux trois ptits trucs cependant:
Premierement, je ne sais pas a priori dans quelle table se trouve l enregistrement que je veux effacer, et par consequent, le nom du champ (qui est bien ma cle primaire comme tu l´avais devine) varie;
Deuxiemement, j ai essaye un truc du genre, en ouvrant un recordset sur une requete du meme genre que la tienne, et quand je fais le .Delete, je recois un joli message d erreur (en allemand soit dit au passage, car je bosse à l etranger!) qui me dit en gros que l enregistrement est protege en ecriture :sad) .
Troisiemement, c est quoi le DB_OPEN_DYNASET?
Quatriemement, si tu connais une meilleure methode pour faire ca, je suis preneur! Le InputBox est la premiere idee qui m est venue (pour ne pas dire la seule), mais je n ai rien contre le progres!
fredieuric
Messages postés24Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention 2 octobre 20081 18 juil. 2002 à 14:35
Autre chose:
Si ca peut te donner une id plus precise de ce que g fait, je te donne mon code (en allemand, desole!):
Private Sub Teil_Nr__Vorhandern_Click()
On Error GoTo Err_Teil_Nr__Vorhandern_Click
Dim Nummer As String
Dim Abfrage(1 To 13) As String
Dim bds As Database, qdf As QueryDef
Dim intI As Integer
Dim Name As String
Dim f As Field
Dim rs As Recordset
Nummer = InputBox("Sachummer?")
If Nummer = "" Then Exit Sub
Set bds = CurrentDb
For Each qdf In bds.QueryDefs
If qdf.Name = "querytemp" Then
DoCmd.DeleteObject acQuery, "querytemp"
End If
Next qdf
Abfrage(1) = "SELECT Aussengewinde.[Aussengewinde Sachnummer] FROM Aussengewinde GROUP BY Aussengewinde.[Aussengewinde Sachnummer] HAVING Aussengewinde.[Aussengewinde Sachnummer]= '" & Nummer & "';"
Abfrage(2) = "SELECT [Hydraulische Verschraubung].[Hydraulische Verschraubung Sachnummer] FROM [Hydraulische Verschraubung] GROUP BY [Hydraulische Verschraubung].[Hydraulische Verschraubung Sachnummer] HAVING [Hydraulische Verschraubung].[Hydraulische Verschraubung Sachnummer]= '" & Nummer & "';"
Abfrage(3) = "SELECT Innengewinde.[Innengewinde Sachnummer] FROM Innengewinde GROUP BY Innengewinde.[Innengewinde Sachnummer] HAVING Innengewinde.[Innengewinde Sachnummer]= '" & Nummer & "';"
Abfrage(4) = "SELECT Ringarmaturen.[Ringarmatur Sachnummer] FROM Ringarmaturen GROUP BY Ringarmaturen.[Ringarmatur Sachnummer] HAVING Ringarmaturen.[Ringarmatur Sachnummer]= '" & Nummer & "';"
Abfrage(5) = "SELECT [Rohr-Armatur-Verstemmung].[Rohr-Armatur-Verstemmung Sachnummer] FROM [Rohr-Armatur-Verstemmung] GROUP BY [Rohr-Armatur-Verstemmung].[Rohr-Armatur-Verstemmung Sachnummer] HAVING [Rohr-Armatur-Verstemmung].[Rohr-Armatur-Verstemmung Sachnummer]= '" & Nummer & "';"
Abfrage(6) = "SELECT [Rohr-Ringarmatur-Verstemmung].[Rohr-Ringarmatur-Verstemmung Sachnummer] FROM [Rohr-Ringarmatur-Verstemmung] GROUP BY [Rohr-Ringarmatur-Verstemmung].[Rohr-Ringarmatur-Verstemmung Sachnummer] HAVING [Rohr-Ringarmatur-Verstemmung].[Rohr-Ringarmatur-Verstemmung Sachnummer]= '" & Nummer & "';"
Abfrage(7) = "SELECT Überwurfschraube.[Überwurfschraube Sachnummer] FROM Überwurfschraube GROUP BY Überwurfschraube.[Überwurfschraube Sachnummer] HAVING Überwurfschraube.[Überwurfschraube Sachnummer]= '" & Nummer & "';"
Abfrage(8) = "SELECT Überwurfmutter.[Überwurfmutter Sachnummer]FROM Überwurfmutter GROUP BY Überwurfmutter.[Überwurfmutter Sachnummer]HAVING Überwurfmutter.[Überwurfmutter Sachnummer]= '" & Nummer & "';"
Abfrage(9) = "SELECT [Armaturen mit Überwurfmutter].[Armaturen mit Überwurfmutter Sachnummer] FROM [Armaturen mit Überwurfmutter] GROUP BY [Armaturen mit Überwurfmutter].[Armaturen mit Überwurfmutter Sachnummer] HAVING [Armaturen mit Überwurfmutter].[Armaturen mit Überwurfmutter Sachnummer]= '" & Nummer & "';"
Abfrage(10) = "SELECT [Armaturen mit Überwurfschraube].[Armaturen mit Überwurfschraube Sachnummer] FROM [Armaturen mit Überwurfschraube] GROUP BY [Armaturen mit Überwurfschraube].[Armaturen mit Überwurfschraube Sachnummer] HAVING [Armaturen mit Überwurfschraube].[Armaturen mit Überwurfschraube Sachnummer]= '" & Nummer & "';"
Abfrage(11) = "SELECT Hohlschraube.[Hohlschraube Sachnummer] FROM Hohlschraube GROUP BY Hohlschraube.[Hohlschraube Sachnummer] HAVING Hohlschraube.[Hohlschraube Sachnummer]= '" & Nummer & "';"
Abfrage(12) = "SELECT [Steckarmatur für Rohr].[Steckarmatur für Rohr Sachnummer] FROM [Steckarmatur für Rohr] GROUP BY [Steckarmatur für Rohr].[Steckarmatur für Rohr Sachnummer] HAVING [Steckarmatur für Rohr].[Steckarmatur für Rohr Sachnummer]= '" & Nummer & "';"
Abfrage(13) = "SELECT [Steckarmatur für Schlauch].[Steckarmatur für Schlauch Sachnummer] FROM [Steckarmatur für Schlauch] GROUP BY [Steckarmatur für Schlauch].[Steckarmatur für Schlauch Sachnummer] HAVING [Steckarmatur für Schlauch].[Steckarmatur für Schlauch Sachnummer]= '" & Nummer & "';"
intI = 1
Set qdf = bds.CreateQueryDef("querytemp", Abfrage(intI))
Name = "Aussengewinde Sachnummer"
Set rs = qdf.OpenRecordset()
While rs.EOF = True And (intI < 14)
DoCmd.DeleteObject acQuery, "querytemp"
Set qdf = bds.CreateQueryDef("querytemp", Abfrage(intI))
intI = intI + 1
Set rs = qdf.OpenRecordset()
For Each f In qdf.Fields
Name = f.Name
Next
Wend
If rs.EOF = True Then
MsgBox ("Dieses Teil ist nicht in der Datenbank")
Else:
If MsgBox("Möchten Sie wirklich das Teil Nummer " & Nummer & " in Feld " & Name & "löchen?", vbYesNo, "Teil löchen") = vbYes Then
rs.Delete
End If
End If
DoCmd.DeleteObject acQuery, "querytemp"
Exit_Teil_Nr__Vorhandern_Click:
Exit Sub
Err_Teil_Nr__Vorhandern_Click:
MsgBox Err.Description
Resume Exit_Teil_Nr__Vorhandern_Click
End Sub
Jerrymcfly
Messages postés29Date d'inscriptionvendredi 8 mars 2002StatutMembreDernière intervention26 juillet 2002 18 juil. 2002 à 14:55
Ouf,
désolé... mais en allemend ça m'aide pas du tout lol
Je vais te demander des explications :
Tu veux supprimer quoi ? une ligne dans un table ? la valeur d'un champ dans un ligne ? un champ ?
Si tu fais un .delete sur une requete ayant une jointure... c'est normal que tu aies ce message "protegé en ecriture".
alors si tu veux bien m'accorder un peux de temps, expliques moi ce que l'utilisateur tape (lol en français si possible), et ce que tu dois supprimer en conséquence... à quel endroit.
A quand un VBfrance.com en vocal ?? mdrr...
Pour moi, la meilleure methode c'est que l'utilisateur avec ses doigts de fées en fasse le moins possible, je remplis une liste déroulante avec les valeurs, il les sélectionne, clique sur supprimer et confirme... ça serait bien de l'appliquer à ce que tu fais, je pense.
Vous n’avez pas trouvé la réponse que vous recherchez ?
fredieuric
Messages postés24Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention 2 octobre 20081 18 juil. 2002 à 15:26
Je vais essayer d etre clair ce coup ci:
J ai differentes tables avec des pieces automobiles et leurs caracteristiques (ex: une table „armature de freins“, une autre „vis creuses“ ...). Pour chacune de mes tables, la cle primaire est le numero de la piece (ex: S10001A).
Si je veux supprimer la pièce S10252, je ne sais pas dans quelle table elle se trouve, ca peut etre une armature, une vis... Il faut donc que je parcoure les numeros de chaque piece de chaque table pour trouver l enregistrement. Une fois cet enregistrement trouve, je veux le supprimer (ex: S10252 est une vis creuse, la table contient les champs suivants: diametre, hauteur, pas, revetement, matiere..., il faut alors supprimer la ligne entiere, pas seulement le premier champ de la table.
L utilisateur tape le numero S10252, je dois alors supprimer:
Nom S10252 / diametre 12 / hauteur 25 / pas M12 / revetement ZnNi / matiere 1.0718
voila, j espere avoir ete plus clair, merci pour ta patience!
Jerrymcfly
Messages postés29Date d'inscriptionvendredi 8 mars 2002StatutMembreDernière intervention26 juillet 2002 18 juil. 2002 à 16:02
Alors pour l'inputbox, t'avais raison :)
vu que c'est un champs clé... assez court
bref essayes ça methode assez courte, et facile à comprendre
tu mets ça sur un bouton :
if Supprime_piece(inputbox("piece a supprimer"))then
msgbox "Piece supprimée"
Else
msgbox "piece non supprimée"
end if
et cette fonction dessous
Function Supprime_Piece(Num_piece As String) As Boolean
'recherche et suppression dans table VIS Set RS CurrentDb.OpenRecordset("SELECT * FROM VIS WHERE [VIS].Cle '" & Num_piece & "'")
If Not RS.EOF Then
If MsgBox("Supprimer la vis " & Num_piece & " ?", vbYesNo) = vbNo Then Exit Function
RS.MoveFirst: RS.Delete: Supprime_Piece = True: Exit Function
End If
'recherche et suppression dans table Armature Set RS CurrentDb.OpenRecordset("SELECT * FROM ARMATURE WHERE [ARMATURE].Cle '" & Num_piece & "'")
If Not RS.EOF Then
If MsgBox("Supprimer l'armature " & Num_piece & " ?", vbYesNo) = vbNo Then Exit Function
RS.MoveFirst: RS.Delete: Supprime_Piece = True: Exit Function
End If
' et ainsi de suite... dans toutes tes tables.
End Function