access-vba - una - insertar registros en access desde formulario
Access 2010: compruebe los datos en el conjunto de registros antes de agregar un nuevo registro (2)
Acabo de escribir este código para recrear tu situación y funcionó bien. Solo necesita cambiar el nombre de sus columnas y su tabla en la consulta.
Dim strSQL As String
Dim qdf As QueryDef
''if these columns are not text change to approriate type
strSQL = "PARAMETERS [NameToCheck] Text(255),[CityToCheck] Text(255),[Zip] Text(255); "
''change table name and column names here
strSQL = strSQL & "SELECT Count(*) FROM address " _
& "WHERE FName = [NameToCheck] AND City = [CityToCheck] AND ZipCode = [Zip];"
Set qdf = CurrentDb.CreateQueryDef("", strSQL)
qdf("NameToCheck") = txtName.Value ''change to that textfield on form
qdf("CityToCheck") = txtCity.Value ''change to that textfield on form
qdf("Zip") = txtZipCode.Value ''change to that textfield on form
If qdf.OpenRecordset(dbOpenSnapshot)(0) > 0 Then
MsgBox "This record is already in the database"
Else
''Insert statement goes here.
End If
Soy nuevo en Access así que tengan paciencia aquí.
Tengo un formulario que me permite agregar nuevos datos a una tabla
ID | Name | City | Zip Code
1 | John | Newark | 12340
2 | Alex | Boston | 98760
Y así sucesivamente ...
Antes de proceder a agregar un nuevo registro con los campos de datos anteriores, necesito crear un cheque que observe la tabla para determinar si ya existen las combinaciones de Nombre, Ciudad y Código postal. Si lo hacen, quiero que salga de Sub; De lo contrario, continúe con el resto de la macro.
He estado buscando construir esto usando alguna forma del comando OpenRecordset, pero no estoy seguro por dónde comenzar. ¿Alguien me puede apuntar en la dirección correcta? ¡Gracias!
Si desea usar los conjuntos de registros como lo solicitó, deberá usar una declaración de SQL para seleccionar todo o usarlo para buscar algo por su nombre.
Dim myR as Recordset
Dim strSQL as String
''run a SQL statement to select a record with the same info
strSQL = "SELECT [Name], [City], [Zip Code] FROM table_name_here " & _
"WHERE [Name] = ''" & form_control_name & "'' " & _
"AND [City] = ''" & form_control_city & "'' " & _
"AND [Zip Code] = ''" & form_control_zip & "''"
''set your recordset to the SQL statment
Set myR = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
''if your count is greater than 0, then you''ll have a duplicate
If myR.RecordCount > 0 then
MsgBox "This already exists"
Else
MsgBox "All clear"
End if
Set myR = Nothing