Puedo utilizar más de 258 caracteres en la instrucción DoCmd. ¿RunSQL?

Estoy utilizando un formulario de una tabla y quisiera que parte de esos datos se traspasaran a otra tabla, pero resulta que hasta ahora lo he hecho pero quiero traspasar más datos y la instrucción es tan grande que no la admite, ¿se puede ampliar los caracteres, o se puede hacer la misma instrucción en varias líneas?, he estado probando varias formas que he visto, pero todas me dan error, y si creo dos instrucciones DoCmd. RunSQL me hace el traspaso en dos registros diferentes.

4 Respuestas

Respuesta

La longitud máxima de una consulta SQL que se puede ejecutar con DoCmd. RunSQL es de 64KB, como alternativa puede utilizar DAO. RecordSet. Por ejemplo:

Dim db AS DAO.Database

Dim strSql AS String

Set db=CurrentDB

strSql="INSERT INTO mitabla(campo1,campo2) VALUES(valor1,valor2);"

Db. Execute strSql

Ahora, si quire más flexibilidad y potencia piense en migrar a un servidor de datos como MySQL, SQLServer, PostgreSQL(mi preferido) etc.

Perdona mi ignorancia pero he copiado lo que me pones, utilizando  en "mitabla" el nombre de mi tabla y en "campo1 ,..." mis campos y en "Valor1, ..." Los valores del formulario y me salta un aviso que me dice: 

Error en compilación

No se ha definido el tipo definido por el usuario.

No sé si DataBase he de cambiarlo por algo 

Para el torpe de Julián lea bien mi respuesta son 64 KB no caracteres y por favor más respeto. Hoy si confirmo que usted es un inexperto en Access y más Access avanzando no se sale de respuestas como dlookup() dmax() etc y muchas de principiantes.

Antonio si quiere envíeme su base de datos comprimida en RAR a [email protected]. Si prefiere puede enviar el texto del SQL

Cómo lo indica Enrique si lo hace con una macro tiene la limitante de caracteres

Respuesta

Es raro porque una instrucción SQL admite hasta 32768 caracteres

Me sorprende las respuestas que dan. De Eperezfer me lo puedo esperar todo pues el polvo blanco le afecta a la única neurona que tiene. Mira

https://learn.microsoft.com/es-es/office/vba/api/access.docmd.runsql 

Buenas tardes Julián, pero creo que eso es en consultas,

Cuando desde el código VB quieres que se ejecute una instrucción como por ejemplo, insertar datos de un registro en una tabla que no sea el origen del formulario se usa una instrucción Docmd.runsql"Insert...

Para actualizar

Docmd.runsql"update clientes set.....

Y ahí es donde puedes darle el tamaño que quieras a dicha instrucción.

Lo estoy haciendo con esta instrucción Docmd.runsql"Insert..., pero cuando completa la línea de comando no se cómo continuar con la instrucción en la línea siguiente.

Si quieres, repito, si quieres, mándame un mensaje ( sólo el mensaje) a [email protected] y te mando un ejemplo, con salto de línea.

Si lo haces, en el asunto del mensaje pon tu alias Antonio García, ya que si no sé quien me escribe, ni los abro.

Respuesta

I. Hola Antonio, por mi parte no soy usuario habitual de VBA ni de Excel, pero como suelo comentar quisiera trasladarle la información que vi sobre su consulta por si pudiese serle de alguna utilidad mientras le atiende un experto de primera mano. Le ruego me disculpe la imprecisión y las molestias de tanta lectura, ánimo.

https://www-access--programmers-co-uk.translate.goog/forums/threads/need-to-fetch-more-than-255-characters-context-data-thru-a-combo.312136/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

http://www.mvp-access.com/foro/campos-truncados-a-255-caracteres_topic86375.html 

https://www.youtube.com/watch?v=iIberC3EpnE 

https://www.youtube.com/watch?v=IIRaSARt2eQ 

https://www.todoexpertos.com/preguntas/ca6xc3i3gwj64mly/como-puedo-hacer-un-tabla-con-muchos-campos-que-se-pueda-escribir-mucho-registros

https://groups.google.com/g/microsoft.public.es.access/c/NHM9VEMd9xI 

https://www.access-programmers.co.uk/forums/threads/can-a-form-open-an-attachment-field-from-another-table.321893/ 

https://www.access-programmers.co.uk/forums/threads/importing-excel-spreadsheet-truncates-field-to-255-characters.329022/

https://www.youtube.com/watch?v=EwbtUMLxbkI 

https://www.youtube.com/watch?v=bPIMmJ3utjQ 

https://bytes.com/topic/access/answers/961455-transfer-data-form-table

https://www-access--programmers-co-uk.translate.goog/forums/threads/textbox-size-limit-in-report.123280/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://stackoverflow.com/questions/64273046/retrieve-more-than-255-characters-from-a-query-field 

https://stackoverflow-com.translate.goog/questions/42218822/how-to-store-data-more-than-255-character-in-access-2013?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://es.stackoverflow.com/questions/248641/problemas-con-el-tipo-de-campo-en-consultas-ado-con-m%C3%A1s-de-8-recordset 

Respuesta

El limite esta en el tamaño del buffer que utiliza el motor de Access para evaluar las expresiones.

Un método que utilice en un caso similar fue acortar los nombres de los objetos involucrados y eliminar (cuando fue posible) 'los apellidos' (por ejemplo los nombres de las tablas si no existían coincidencias y de coincidir: utilizar solo las indispensables).

Ante las diferentes opiniones, la referencia del comando según la ayuda de Access sobre DoCmd. RunSQL:


Comentarios

Puede usar la acción RunSQL para ejecutar una consulta de acciones (consulta de acciones: consulta que copia o cambia datos. Las consultas de acciones incluyen consultas para anexar, eliminar, convertir en tabla y actualizar consultas. Se identifican con un signo de exclamación (!) Junto a sus nombres en el panel de navegación.) De Microsoft Access mediante la instrucción SQL (cadena o instrucción SQL: expresión que define un comando de SQL, como SELECT, UPDATE o DELETE, e incluye cláusulas como WHERE y ORDER BY. Las instrucciones o cadenas SQL se utilizan en consultas y en funciones de agregado.) Correspondiente. También puede ejecutar una consulta de definición de datos (consulta de definición de datos: consulta específica de SQL que contiene instrucciones DDL (lenguaje de definición de datos). Estas instrucciones permiten crear o alterar objetos de la base de datos.).

Este método sólo es aplicable a bases de datos de Microsoft Access (base de datos: colección de datos relacionados con un fin o tema concreto. Dentro de una base de datos, la información sobre una entidad en particular, como un empleado o un pedido, se clasifica en categorías en tablas, registros y campos.).

La longitud máxima del argumento sqlstatement es de 32.768 caracteres (a diferencia del argumento de acción Instrucción SQL en la ventana Macro (ventana Macro: ventana en la que se crean y modifican las macros.), cuya longitud máxima es de 256 caracteres).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas