Estoy tratando de insertar algunos registros en la Tabla de Access con la ayuda de debajo de VB Script. Pero cuando estoy tratando de ejecutar, es tirar error de Compilación: prevista para el final de la instrucción. Podría por favor alguien que me ayude a averiguar dónde estoy pasando mal.

Private Sub Form_Click()
Dim dbs         As DAO.Database
Dim DbFullNAme  As String

DbFullName = "D:\G\Diamond\FINAL MS-Access\MS-Access project.accdb"
Set dbs = OpenDatabase(DbFullName)

dbs.Execute "INSERT INTO [2014_Status] ( Prompt, Project_Name, STATUS,Release_Name )SELECT     RoadMap.SPRF_CC, RoadMap.SPRF_Name, RoadMap.Project_Phase,RoadMap.Release_Name FROM RoadMap WHERE (((Exists (select 1 FROM [2014_Status] where RoadMap.SPRF_CC = [2014_Status].[Prompt]))=False));"
dbs.Close
End Sub
  • El mensaje de error de compilación es como , D:\G\Diamond\FINAL MS-Access\consulta1.vbs(2, 9) compilación de Microsoft VBScript err o: final Previsto de la declaración de
  • y sólo para comprobar, el código anterior es el código en query1.vbs? Si no, por favor enviar el código para consulta1.vbs en su pregunta.
  • Creo que usted necesita () todo el código sql – dbs.Execute («…;»)
  • Está usted seguro de que el uso de este correctamente (((Exists (select 1 FROM [2014_Status] donde la hoja de ruta.SPRF_CC = [2014_Status].[Símbolo]))=False)). No creo que el Acceso o apoyo de esta características. Pero, en cualquier caso, la cláusula where sería extraño «…donde null=false;» o «…donde 1=false;» y, en cualquier caso, se producirá un error porque no hay nada para insertar en todos. Tratar de ver cómo la instrucción SQL se ve como antes de ejecutarlo.
  • Por favor, no piense, pero verificación de hechos antes de publicar: usted no debe utilizar param list () cuando se llama a un sub en VBScript.
  • Aunque estoy de acuerdo con su declaración inicial como la de Don comentario no fue correcta o útil, es absolutamente bien para uso () en el código cuando se llama a un sub. Sin embargo, usted tiene que activar la sub través de un Call declaración, por ejemplo, Call dbs.Execute('sql statement')

InformationsquelleAutor user2412576 | 2014-04-23

3 Comentarios

  1. 3

    VBScript (como opuesto a VBA o de otros dialectos) ¿no apoyo escrito se Atenúa. Así

    Dim dbs         As DAO.Database
    Dim DbFullNAme  As String

    necesitan ser

    Dim dbs
    Dim DbFullNAme

    VBscript no tiene ningún nativo OpenDatabase() función. Usted necesidad de utilizar ADO para conectarse a su Acceso ‘base de datos’. Primero crear una conexión

    Set dbs = CreateObject("ADODB.Connection")

    A continuación, determinar la cadena de conexión y

    dbs.Open cs

    El resto de tu código debería funcionar.

    Actualización wrt comentario:

    El mensaje de error:

    D:\G\Diamond\FINAL MS-Access\query1.vbs(2, 9) Microsoft VBScript compilation error: Expected end of statement

    prooves que el OT traté de escribir un VBScript (la adición de la engañosa vba/acceso de las etiquetas es (C) Pankaj Jaju).

    • -1: obviamente Esta es una secuencia de comandos VBA debido a que el Acceso VBA comando específico de OpenDatabase() de ser utilizado. Si el OP habían utilizado el Set acc = createobject("Access.Application") entonces él podría utilizar como acc.OpenDatabase. Pero no importa, este es incompleta e insuficiente respuesta.
    • dearie mí, es uno o el otro, VBScript o VBA, y la fusión de las dos es, potencialmente, el OP del problema – y si no lo es, luego de salir de los tags en el es (como se podría decir) ‘obviamente’ un error. Dicho esto, como te sientes pedante, OpenDatabase es no un ‘Access VBA comando específico», dado que estarán disponibles a través de cualquier VBA o basada en COM entorno de VB que tiene una referencia a la DAO biblioteca de tipos de carga.
    • en principio, el OP no tenía uso de ADO y podría utilizar DAO de VBScript demasiado…
  2. 2

    Así que vamos a romper la verdadera razón por la que este código no funciona.

    Que has copiado y pegado de Visual Basic para Aplicaciones(VBA) en una .VBS(Visual Basic Script) archivo y espera que el trabajo, supongo.

    El problema con esto es que VBA y VBScript son ligeramente diferentes idiomas. Revisión de la sección de información para ambas marcas en stackoverflow cuando usted consigue la oportunidad.

    Por ahora le acaba de revisión de su código y mantener su objeto DAO así que usted no tiene que reconstruir su Base de datos de uso con el objeto ADODB.

    ExecuteInsert
    Sub ExecuteInsert()
        Dim dbs, DbFullName, acc
        Set acc = createobject("Access.Application")
    
        DbFullName = "D:\G\Diamond\FINAL MS-Access\MS-Access project.accdb"
        Set dbs = acc.DBEngine.OpenDatabase(DbFullName, False, False)
        dbs.Execute "INSERT INTO [2014_Status] ( Prompt, Project_Name, STATUS,Release_Name )SELECT     RoadMap.SPRF_CC, RoadMap.SPRF_Name, RoadMap.Project_Phase,RoadMap.Release_Name FROM RoadMap WHERE (((Exists (select 1 FROM [2014_Status] where RoadMap.SPRF_CC = [2014_Status].[Prompt]))=False));"
        dbs.Close
        msgbox "done"
    End Sub

    Los cambios realizados.

    1. Bloqueado el dim d variables y se retira As *** declaraciones de vbscript compatibilidad
    2. Establecer un objeto de access, de modo que usted puede mantener el resto de tu código.
    3. Añadido la acc.DBEngine. antes de OpenDatabase con parámetros adicionales.
    4. Cambiado el nombre de tu Sub desde Form_Click a ExecuteInsert, luego se coloca ExecuteInsert en la parte superior del código para que el vbscript activa el sub. Si usted sólo tiene que colocar un sub en un archivo de vbscript, no necesariamente, tiene que activar directamente.

    Este código es probado y funciones. La mejor de las suertes para usted.

    • +1 – ‘le acaba de revisión de su código y mantener su objeto DAO así que usted no tiene que reconstruir su uso de Base de datos con ADODB’ – de hecho!
  3. 0

    Añadir a Ekkehard.Horner
    http://www.csidata.com/custserv/onlinehelp/vbsdocs/vbs6.htm

    VBScript sólo tiene un tipo de datos llamado una Variante. Una Variante es una
    tipo especial de tipo de datos que puede contener diferentes tipos de
    la información, dependiendo de cómo se utiliza. Porque Variante es la única
    tipo de datos en VBScript, es también el tipo de datos devuelto por todos
    funciones de VBScript.

Dejar respuesta

Please enter your comment!
Please enter your name here