![]() |
Sql Embebido
Hola camaradas, nunca use esta modalidad de acceso, use siempre DbAccessControl, de Power, necesitaría un código como ejemplo de como hacer para leer un tabla de una base, vía una ODBC. Estoy leyendo el manual pero no doy pie con bola.
En algún momento alguien subió algo al respecto, pero no logro encontrarlo. Lo que quiero hacer en concreto es agregar campos a tablas ya existentes, tambien crear tablas nuevas en una base. Se que las instrucciones son CreateTable y AlterTable. Todo desde un programa cobol. Saludos y Gracias !! |
A ver Hrm, primero tienes que empezar definiendo la estructura de la tabla en la WORKING, (y todas las variables que vayas a usar en SQL), por ejemplo
Código COBOL:
Ten en cuenta que TODAS las variables numéricas, en la WORKING tienen que llevar signo SÍ o SÍ. - PARA LEER EL NÚMERO DE REGISTROS: Código COBOL:
en CONTASQL se almacenaría el total de registros - PARA LEER UN REGISTRO ESPECÍFICO Código COBOL:
- PARA LEER UN RANGO ESPECÍFICO DE REGISTROS Código COBOL:
- PARA INSERTAR UN NUEVO REGISTRO Código COBOL:
El primer campo es NULL, porque el campo ID_GAS, que es la clave principal, es un campo AUTO_INCREMENT. - PARA MODIFICAR UN REGISTRO EXISTENTE: Código COBOL:
Aquí no puedes poner el primer campo, porque la llave principal, no se puede volver a grabar, si lo pusieras daría el error S200 en SQLSTATE. despues de cada vez que INSERTES/MODIFIQUES un registro, has de poner Código COBOL:
o de lo contrario, no te modificará la tabla, en caso que que quiereas desacer los cambios, cambias el COMMIT por ROLLBACK, pero una vez que haya hecho el COMMIT, los cambios no se pueden deshacer. Creo que está todo, si tienes dudas o problemas, dinoslo. Un saludo.- |
Se me ha pasado el ponerte como se crea la tabla
Código COBOL:
Si no pones la instrucción IF NOT EXIST, te dará error si la tabla ya existe - Si deseas eliminar elementos de la tabla: Código COBOL:
- Si quieres vaciar por completo una tabla, además de poner el contador AUTO_INCREMENT a 0, (si lo tiene la tabla, que no es obligatorio) Código COBOL:
- Si quieres eliminar por completo la tabla, (datos y estructura) Código COBOL:
¡Cuidado! que TRUNCATE y DROP, no tienen vuelta atrás Si quieres ver cómo esta creada una tabla, desde el administrador de BD, no desde tu programa COBOL Código SQL:
Esto te daría un fichero de texto plano muy similar al que utilizas para crear la tabla. Un saludo y suerte.- ---------- Post añadido : 11:46 ---------- Post anterior : 11:30 ---------- Otra cosa a tener en cuenta, es cuando creas un número en SQL y has de ponerle un tamaño con decimales, esto se define entre paréntesis, el primer número indica el tamaño total, (incluidos los decimales) y el segundo los decimales, por ejemplo, un campo en COBOL del tipo Código COBOL:
en SQL, sería Código SQL:
Si te fijas WDECIMAL en SQL, tiene un tamaño de 10, de los que 3 son decimales. Los campos en SQL, se separan utilizando el símbolo de la , (coma), y las instrucciones se separan utilizando el símbolo ; (punto y coma), por ejemplo: Código COBOL:
Cuidado con las comas y los punto y comas, que son obligatorios y es muy estricto en ésto. Un saludo |
Estimados, sigo colgado con este tema.
La pregunta es: Como relaciono la ODBC con el PwCobol sin usar DbAccessControl Saludos |
Hrmcobol, si no me equivoco, tienes que crear un fichero *.inf con la configuración de la conexión e indicarlo en COBOL85.CBR con la variable @ODBC_Inf.
Ejemplo: Código:
@ODBC_Inf=PRUEBA.inf |
Asi Es Kuk, la conexión se hace r intermedio del @ODBC_Inf=PRUEBA.inf y el cobol85.cbr, logre abrir la base y leer registros de la tabla.
Gracias. |
muy bueno el aporte de jorber
5 Archivos Adjunto(s)
Como primer paso en tu proyecto deberias direccionar donde estara tu archivo de coneccion via odbc (ojo .. por fuera podes cambiar esa direccion tambien)
Luego ejecutar el SQLODBCS a los efectos de crear la sesion con el archivo de coneccion seleccionas una seccon en este caso la llame SV4 asociada a una base "cursos", con su usuario y clave (root y su clave) luego en la procedure estableces la coneccion y trabajas con todas aquellas posiblidades que te brindo josber con comandos sql al finalizar el programas te desconectas |
Estimados, ante todo gracias por vuestra colaboración.
Ya he logrado leer y agregar registros a la tabla. Aprendí la conexión Odbc/Cobol85/Sql.Inf Ahora lo que quiero hacer es crear una tabla nueva con la instrucción CREATE TABLE, como se imaginaran copie el código del post que puso Josber, cuando compilo me da el siguiente error: ART00101 CbLeer1-Click(20) : JMN2633I-S The SQL statement is invalid. ODBC-7600E NOT EXECUTABLE SQL STATEMENT.. Aparentemente el error es que " Create Table" no esta soportado. Alguna idea? Saludos Les adjunto el código que escribí Código COBOL:
|
Hola Hrm
Creo haber leído en algún sitio, ahora no recuerdo donde, que desde el SQL embebido solo puedes hacer uso del lenguaje DML (Data Manipulation Laguaje) que es que estáis comentando aquí, pero no puedes hacer uso del DDL (Data Definition Laguaje) que es el que sirve para definir objetos en la base de datos (Tablas, Vistas, etc.) |
Gracias Xavier. Estoy leyendo el manual un poco mas detenidamente y aparentemente es así como tu dices.
Entonces la pregunta es: No se pueden usar "Alter" y "Create" en PWC ? Saludos |
A ver yo la creación y modificación de tablas la hago a través del gestor de MySql, nunca lo he probado a través de PWC, pero por lo que he estado leyendo en otros sitios, no se puede, según parece, la única manera de hacerlo, sería atraves de los controles ADO, pero no lo he hecho nunca y no tengo ni idea de como funcionan. El resto de instrucciones que he puesto, si están probadas por mi y funcionan perfectamente.
Un saludo.- |
Hrmcobol,
Fiz há algum tempo atras um software para transferir ficheiros de PowerCobol para uma base de dados de um site na Internet. Está tudo feito em PowerCobol V9.0, cria as tabelas no SQL do site, apaga as tabelas também, e escreve e le dados, tudo através duma ligação á Internet. Não utiliza ODBC, faz a ligação direta á base de dados. A única diferença é que utilizei tudo, através de comandos COM/OLE2 e o ADO. Código COBOL:
Já subi, algum tempo atrás, para o foro um exemplo de como ligar por esse processo e ler dados da base de dados. --> Base de Dados DBF por OLE2 Se estiveres interessado na utilização de COM/OLE2, poderei dar-te uma ajuda, com um pequeno exemplo. Un saludo, Rui Pinto |
Gracias Rapinto. Como Siempre Usted Con La Respuesta. Esto es demasiado para mi, nunca trabaje ni vi nada con ADO. El tema de crear y modificar tablas era solo una sutileza que quería hacer.
Lo dejare para mas adelante. Saludos !! |
Josber, y otros amigos del foro. ¿Utilizáis un precompilador particular de la BBDD o el que viene con NetCOBOL? Y también, ¿cómo incluís la SQLCA, con COPY o con EXEC SQL INCLUDE?
|
Cita:
Yo utilizo el que viene con Netcobol incluido, en cuanto a lo otro, no caigo ahora en qué es Un saludo.-c |
Josber, lo otro es una tontería, debe ser EXEC SQL INCLUDE, se me ha ido la fresa a la hora de preguntarlo ;)
|
sql embebido
Buen dia
sigo sin poder conectar Powercobol con Mysql por favor si tienen unos minutos para explicar el contenido de COBOL85.cbr y BD.inf |
dmosca, a ver lo principal es que, no sé si será tu caso, pero si tienes los ejecutables en un directorio distinto a los fuentes, no te funcionará, para que funcione, tienes que cambiarlo en el proyecto.
En el fichero COBOL85.CBR, has de poner una línea más o menos así, (puedes hacerlo con el Notepad, que funciona igual): @ODBC_Inf=C:\Tiras y Cordones\bd.inf El fichero .inf, en mi caso BD.inf, has de crearlo con la utilidad SQLODBCS, para ello, antes tienes que haber creado el conector ODBC, desde el panel de control de windows. Una vez creado el ODBC, es tan sencillo como abrir la utilidad que te he dicho, darle al botón de buscar en la primera pantalla, (Browse), selccionas la carpeta donde quieres guardar el archivo .inf, en esa carpeta pones el nombre que quieres darle al archivo y te preguntará si quieres crear uno nuevo, le dices que sí y entras en la pantalla de configuración. - En Server Name, pones el nombre que quieras, pero ten en cuenta que, el nombre que pongas ahí, va a ser el que uses en tu programa POWER COBOL, por ejemplo para abrir la BD. (EXEC SQL CONNECT TO nombre END EXEC.) - Marca la opción Machine Data Source - En Data Source Name, abres el desplegable, y te aparecerá la conexión ODBC que tengas hecha, la seleccionas. - En User ID, pones el nombre del usuario autorizado para acceder a la BD, si no tienes ninguno, será root - En Password, pones la contraseña de ese usuario. - En Comment, no hace falta que pongas nada si no quieres - En Access Mode, marcas la opción de Read/Write - En COMMIT MODE, depende de como lo tengas definidio en MySQL, si es AUTO o NO El resto de opciones, no me ha hecho falta nunca modificarlas, le das a aceptar y listo, te crea el archivo .inf y a funcionar. Si tienes mas problemas, no dudes en consultar. Un saludo.- |
ok
Josber
pude consultar la base, muchas gracias |
Numa instalação em rede (local network), existe alguma forma de automatizar a criação do DNS?
O objetivo era não ter que ir a cada maquina para criar manualmente a ligação de ODBC. Gracias Jose |
Cita:
- Creas un archivo con extensión .reg, por ejemplo conexión.reg, con los siguientes valores: Código:
Windows Registry Editor Version 5.00REG IMPORT [unidad/ruta]nombre_archivo.reg Si en vez de querer crear el DSN por usuario, quieres crearlo por máquina, tienes que cambiar en el archivo .reg HKEY_CURRENT_USER por HKEY_LOCAL_MACHINE Si lo pruebas, comenta el resultado Un saludo.- |
Rapinto, buenas tardes.
tienes el ejemplo de como acceder bdl con ADO? pude conectar y leer una base .mdb, pero necesito conectar a MySql. si puedes compartir el ejemplo para ver como conectar POWERCOBOL V9 a Mysql con COM/OLE2 muchas gracias |
Cita:
Não consigo adicionar o registo :( mas deve ser algo parecido. Gracias ---------- Post añadido : 10:32 ---------- Post anterior : 10:19 ---------- Cita:
Encontrei esta forma e funciona bem (command-line): Add-OdbcDsn ou ODBCCONF.EXE (vai ser descontinuado pela Microsoft) Mysql tem esta opção: myodbc-installer.exe (MariaDB não encontrei esta possibilidade) Desta forma é possivel automatizar todo um setup |
DMOSCA,
Não sei se é isto que pretendes: Código:
DRIVER={MySQL ODBC 5.3 ANSI Driver}Tens que alterar a PORT para o numero de porta certo Tens que alterar o UID para o nome do usuário Altera a PWD para a password correta. Altera DATABASE para o nome correto da base de dados. Na Working-Storage Código COBOL:
e para abrir: Código COBOL:
Não sei se isto ajuda alguma coisa. Saludos, Rui Pinto |
| La franja horaria es GMT +2. Ahora son las 15:27. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.