• Viernes 29 de Marzo de 2024, 12:54

Autor Tema:  Diferencia entre BC y TC  (Leído 2857 veces)

123celes

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Diferencia entre BC y TC
« en: Domingo 26 de Octubre de 2008, 13:14 »
0
Hola, ¿Qué tal?, aquí estoy de nuevo, esta vez con una duda de de C++. Me baje hacer poco los compiladores Borland c++ 3.1 y Turbo c++ 3.1 y a mí me parecen iguales, ¿Cual es la diferencia entre ellos?

También estoy buscando alguna librería que me permita trabajar con bases de datos, usando estos compiladores, ¿Ustedes conocen alguna? Resulta que hace poco conseguí el libro "SQL para usuarios y programadores, cuarta edición 1998" y en la Pág. 187 explica como conectar un programa escrito en lenguaje C con una base de datos:

Código: Text
  1. #include <stdiol.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define     NOTFOUND 100
  6.  
  7. //Página 187
  8.  
  9. EXEC SQL INCLUDE SQLCA
  10.  
  11. /*Declaración de la tabla TEMPLE de los ejemplos*/
  12.  
  13. EXEC SQL DECLARE TEMPLE TABLE
  14.          (NUMEM INTEGER NOT NULL,
  15.           NUMDE INTEGER NOT NULL,
  16.           EXTEL SMALLINT NOT NULL,
  17.           FECNA DATE     NOT NULL,
  18.           FECIN DATE     NOT NULL,
  19.           SALAR DECIMAL (5,0) NOT NULL,
  20.           COMIS DECIMAL (5,0),
  21.           NUMHI SMALLINT      NOT NULL,
  22.           NOMEM VARCHAR(20)   NOT NULL);
  23.          
  24. void main ()
  25.  
  26. {
  27.  
  28. }
  29.  
  30.  
Pero cuando lo trato de compilar el programa no me reconoce ninguna sentencia ¿Alguien sabe que compilador de C, estaban usando en ese libro?¿O algún ejemplo de conexión a base de datos con el Borland c++ o el Turbo c++?

Bueno muchísimas gracias por su atención.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Diferencia entre BC y TC
« Respuesta #1 en: Domingo 26 de Octubre de 2008, 16:55 »
0
Cita de: "123celes"
# EXEC SQL INCLUDE SQLCA
#  
# /*Declaración de la tabla TEMPLE de los ejemplos*/
#  
# EXEC SQL DECLARE TEMPLE TABLE
#          (NUMEM INTEGER NOT NULL,
#           NUMDE INTEGER NOT NULL,
#           EXTEL SMALLINT NOT NULL,
#           FECNA DATE     NOT NULL,
#           FECIN DATE     NOT NULL,
#           SALAR DECIMAL (5,0) NOT NULL,
#           COMIS DECIMAL (5,0),
#           NUMHI SMALLINT      NOT NULL,
#           NOMEM VARCHAR(20)   NOT NULL);
Cita de: "123celes"
el programa no me reconoce ninguna sentencia

Pues claro que no, porque esto no es C, y lo que tú usas es un compilador de C, no SQL. Tienes que hacer que C sea capaz de comunicarse con una base de datos mediante SQL, no hacer de C SQL. Y revisa bien el código del libro, porque esto que has puesto dudo que esté en el libro así como lo pones...

123celes

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Diferencia entre BC y TC
« Respuesta #2 en: Lunes 27 de Octubre de 2008, 13:50 »
0
Perdón
tenías razón, Gracias por el aviso, era solo un fragmento del código,
metí la pata sin querer.
Voy a comenzar desde el principio conseguí el libro "sql para usuarios
y programadores", cuarta edición 1998 J. Benavides Abajo
J.M. Olaizola Bartolomé
E. Rivera Cornelio
Editorial Paraninfo
El libro habla del sql en general y muestra varios ejercicios a través
de los capitulos. Para poder irlos realizando yo he utilizado el MS-SQL
Server 7(el libro no especifica ningún SGBD en particular, solo habla
del SQL en general). Todos los ejercicios se hacen con la misma base de
datos, es una base de datos llamada TRA que contiene las siguientes
tablas:
Código: Text
  1. --Tablas página 309
  2.  
  3. -------------------------------------------------------------------------------------------------
  4.  
  5. --Tabla
  6. de empleados
  7.  
  8. --Cada fila representa un empleado
  9.  
  10. --nombre de la tabla: TEMPLE
  11.  
  12. --columnas:
  13.  
  14. --NUMEM: número identificador del empleado (integer) NOT NULL
  15.  
  16. --NUMDE: número de departamento al que esta asignado (integer) NOT NULL
  17.  
  18. --EXTEL: EXtensión telefónica correspondiente al empleado (smallint)
  19. NOT NULL
  20.  
  21. --FECNA: Fecha de nacimiento (date) NOT NULL
  22.  
  23. --FECIN: Fecha de ingreso (date) NOT NULL
  24.  
  25. --SALAR: salario mensual (decimal) NOT NULL
  26.  
  27. --COMIS: comisión mensual (decimal), en miles de pesetas.
  28. --Esta columna sólo es aplicable a los empleados que son vendedores,
  29. --o directores de vendedores, incluyendo hasta el director comercial.
  30. En los
  31. --otros empleados toma el valor nulo.
  32.  
  33. --NUMHI: número de hijos (smallint) NOT NULL
  34.  
  35. --NOMEM: nombre del empleado (varchar) NOT NULL
  36.  
  37. --clave primaria: (NUMEM)
  38.  
  39. -------------------------------------------------------------------------------------------------
  40.  
  41. --Tabla
  42. de departamentos
  43.  
  44. --Cada fila representa una unidad organizativa. Todas estas unidades se
  45. llaman departamentos.
  46.  
  47. --nombre de la tabla: TDEPTO
  48.  
  49. --columnas:
  50.  
  51. --NUMDE: número identificador de departamento (integer) NOT NULL
  52.  
  53. --NUMCE: número de centro de trabajo donde esta el departamento
  54. (integer) NOT NULL.
  55. --Todo departamento esta en un centro de trabajo. Un centro es un
  56. edificio o local. Un centro
  57. --puede albergar a más de un departamento.
  58.  
  59. --DIREC: número del empleado que es director del departamento (integer)
  60. NOT NULL.
  61. --Todo departamento tiene un único director. Puede tratarse de un
  62. director en propiedad,
  63. --o de un director en funciones. Un empleado sólo puede ser director en
  64. propiedad de un departa-
  65. --mento como máximo, pero puede ser director provisional en funciones
  66. de varios
  67.  
  68. --TDIR: tipo de director (char) NOT NULL
  69. --P: en propiedad, F: en funciones.
  70.  
  71. --FECIN: Fecha de ingreso (date) NOT NULL
  72.  
  73. --PRESU: presupuesto anual de departamento (decimal), en millones de
  74. pesetas NOT NULL.
  75.  
  76. --DEPDE: Número de departamento del que depende (integer).
  77. --Todo departamento depende de otro (excepto el de más alto nivel, que
  78. no depende de ninguno).
  79. --Un departamento puede tener varios dependientes de el. Esta
  80. dependencia expresa la jeraquía de
  81. --mando. El director de un departamento es jefe de todos los empleados
  82. pertenecientes a su depar-
  83. --tamento y a los departamentos dependientes del suyo, directa o
  84. indirectamente.
  85. --Esta columna admite el valor nulo.
  86.  
  87. --NOMDE: nombre del departamento (varchar) NOT NULL
  88.  
  89. --clave primaria: (NUMDE)
  90.  
  91. -------------------------------------------------------------------------------------------------
  92. --Tabla
  93. de centros de trabajo
  94.  
  95. --Cada fila representa un edificio, piso o local donde se desempeñan
  96. actividades laborales.
  97.  
  98. --nombre de la tabla: TCENTR
  99.  
  100. --columnas:  
  101. --NUMCE: número identificador del centro (integer).
  102.  
  103. --NOMCE: nombre del centro (varchar).
  104.  
  105. --SEÑAS: dirección del local (varchar).
  106.  
  107. --clave primaria: (NUMCE)
  108.  
  109.  
Ahora voy a mostrar como se crea la base de datos y las tablas en
MS-SQL SERVER 7
Código: Text
  1. USE MASTER --ok
  2.  
  3. GO --ok
  4.  
  5. ----------
  6.  
  7. CREATE DATABASE TRA --ok
  8.  
  9. ----------
  10.  
  11. USE TRA --ok
  12.  
  13. GO --ok
  14.  
  15. -----------
  16.  
  17. ----------------------------------------
  18.  
  19. CREATE TABLE TEMPLE(
  20. NUMEM integer  NOT NULL PRIMARY KEY,
  21. NUMDE integer NOT NULL,
  22. EXTEL smallint NOT NULL,
  23. FECNA datetime NOT NULL,
  24. FECIN datetime NOT NULL,
  25. SALAR decimal NOT NULL,
  26. COMIS decimal,
  27. NUMHI smallint NOT NULL,
  28. NOMEM varchar (25)NOT NULL
  29. )
  30.  
  31. ---------------------------------ok
  32.  
  33. CREATE TABLE TDEPTO
  34.  
  35. (NUMDE integer NOT NULL PRIMARY KEY,
  36. NUMCE integer NOT NULL,
  37. DIREC integer NOT NULL,
  38. TDIR char NOT NULL,
  39. PRESU decimal NOT NULL,
  40. DEPDE integer,
  41. NOMDE varchar (25) NOT NULL
  42. )
  43.  
  44.  
  45. ----------------------------ok
  46.  
  47. CREATE TABLE TCENTR
  48.  
  49. (NUMCE integer NOT NULL PRIMARY KEY,
  50. NOMCE varchar (25) NOT NULL,
  51. SEÑAS varchar (25)NOT NULL,
  52. )
  53.  
  54. ---------------------------------ok----------------------------------------------------------------
  55.  
Las
tablas continen los siguientes registros, los que voy a mostrar a
continuación son como se insertarían esos registros con el SGBD MS-SQL
SERVER 7
Código: Text
  1. ---------------------------------ok----------------------------------------------------------------
  2.  
  3. INSERT
  4. into TDEPTO (NUMDE, NUMCE, DIREC, TDIR, PRESU, DEPDE, NOMDE) values
  5. (100, 10, 260, 'P', 12,null, "DIRECCION GENERAL")
  6. INSERT into TDEPTO (NUMDE, NUMCE, DIREC, TDIR, PRESU, DEPDE, NOMDE)
  7. values (110, 20, 180, 'P', 15, 100, 'DIRECCION COMERCIAL')
  8. INSERT into TDEPTO (NUMDE, NUMCE, DIREC, TDIR, PRESU, DEPDE, NOMDE)
  9. values (111, 20, 180, 'F', 11, 110, 'SECTOR INDUSTRIAL')
  10. INSERT into TDEPTO (NUMDE, NUMCE, DIREC, TDIR, PRESU, DEPDE, NOMDE)
  11. values (112, 20, 270, 'P', 9, 110, 'SECTOR SERVICIOS')
  12. INSERT into TDEPTO (NUMDE, NUMCE, DIREC, TDIR, PRESU, DEPDE, NOMDE)
  13. values (120, 10, 150, 'F', 3, 100, 'ORGANIZACION')
  14. INSERT into TDEPTO (NUMDE, NUMCE, DIREC, TDIR, PRESU, DEPDE, NOMDE)
  15. values (121, 10, 150, 'P', 2, 120, 'PERSONAL')
  16. INSERT into TDEPTO (NUMDE, NUMCE, DIREC, TDIR, PRESU, DEPDE, NOMDE)
  17. values (122, 10, 350, 'P', 6, 120, 'PROCESO DE DATOS')
  18. INSERT into TDEPTO (NUMDE, NUMCE, DIREC, TDIR, PRESU, DEPDE, NOMDE)
  19. values (130, 10, 310, 'P', 2, 100, 'FINANZAS')
  20.  
  21. -------------------------------ok
  22.  
  23. INSERT into TCENTR (NUMCE, NOMCE, SEÑAS) values (10, 'SEDE CENTRAL',
  24. 'C. ALCALA, 820 MADRID')
  25. INSERT into TCENTR (NUMCE, NOMCE, SEÑAS) values (20, 'RELACION CON
  26. CLIENTES', 'C. ATOCHA, 405, MADRID')
  27.                    
  28.       -------------------------------
  29.  
  30. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  31. NUMHI, NOMEM) values (110, 121, 350, 10/11/29, 15/02/50, 310,null, 3,
  32. 'PONS, CESAR')
  33. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  34. NUMHI, NOMEM) values (120, 12, 840, 09/06/35, 01/10/68, 350, 110, 1,
  35. 'LASA, MARIO')
  36. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  37. NUMHI, NOMEM) values (130, 112, 810, 09/09/45, 01/02/69, 290, 110, 2,
  38. 'TEROL, LUCIANO')
  39. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  40. NUMHI, NOMEM) values (150, 121, 340, 10/08/30, 15/01/48, 440,null, 0,
  41. 'PEREZ, JULIO')
  42. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  43. NUMHI, NOMEM) values (160, 111, 740, 09/07/39, 11/11/68, 310, 110, 2,
  44. 'AGUIRRE AUREO')
  45. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  46. NUMHI, NOMEM) values (180, 110, 508, 18/10/34, 18/03/56, 480, 50, 2,
  47. 'PEREZ, MARCOS')
  48. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  49. NUMHI, NOMEM) values (190, 121, 350, 12/05/32, 11/02/62, 300,null, 4,
  50. 'VEIGA, JULIANA')
  51. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  52. NUMHI, NOMEM) values (210, 100, 200, 28/09/40, 22/01/59, 380,null, 2,
  53. 'GALVEZ, PILAR')
  54. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  55. NUMHI, NOMEM) values (240, 111, 760, 26/02/42, 24/02/66, 280, 100, 3,
  56. 'SAENZ, LAVINIA')
  57. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  58. NUMHI, NOMEM) values (250, 100, 250, 27/10/46, 01/03/67, 450,null, 0,
  59. 'ALBA, ADRIANA')
  60. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  61. NUMHI, NOMEM) values (260, 100, 220, 03/12/43, 12/07/68, 720,null, 6,
  62. 'LOPEZ, ANTONIO')
  63. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  64. NUMHI, NOMEM) values (270, 112, 800, 21/05/45, 10/09/66, 380, 80, 3,
  65. 'GARCIA, OCTAVIO')
  66. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  67. NUMHI, NOMEM) values (280, 130, 410, 11/01/48, 08/10/71, 290,null, 5,
  68. 'FLOR, DOROTEA')
  69. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  70. NUMHI, NOMEM) values (285, 122, 620, 25/10/49, 15/02/68, 380,null, 0,
  71. 'POLO, OTILIA')
  72. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  73. NUMHI, NOMEM) values (290, 120, 910, 30/11/47, 14/02/68, 270,null, 3,
  74. 'GIL, GLORIA')
  75. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  76. NUMHI, NOMEM) values (310, 130, 480, 21/11/46, 15/01/71, 420,null, 0,
  77. 'GARCIA, AUGUSTO')
  78. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  79. NUMHI, NOMEM) values (320, 122, 620, 25/12/57, 05/02/78, 405,null, 2,
  80. 'SANZ, CORNELIO')
  81. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  82. NUMHI, NOMEM) values (330, 112, 850, 19/08/48, 01/03/72, 280, 90, 0,
  83. 'DIEZ, AMELIA')
  84. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  85. NUMHI, NOMEM) values (350, 122, 610, 13/04/49, 10/09/84, 450,null, 1,
  86. 'CAMPS, AURELIO')
  87. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  88. NUMHI, NOMEM) values (360, 111, 750, 29/10/58, 10/10/68, 250, 100, 2,
  89. 'LARA, DORINDA')
  90. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  91. NUMHI, NOMEM) values (370, 121, 360, 22/06/67, 20/01/87, 190,null, 1,
  92. 'RUIZ, FABIOLA')
  93. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  94. NUMHI, NOMEM) values (380, 112, 880, 30/03/68, 01/01/88, 180,null, 0,
  95. 'MARTIN, MICAELA')
  96. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  97. NUMHI, NOMEM) values (390, 110, 500, 19/02/66, 08/10/86, 215,null, 1,
  98. 'MORAN, CARMEN')
  99. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  100. NUMHI, NOMEM) values (400, 111, 780, 18/08/69, 01/11/87, 185,null, 0,
  101. 'LARA, LUCRECIA')
  102. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  103. NUMHI, NOMEM) values (410, 122, 660, 14/07/68, 13/10/88, 175,null, 0,
  104. 'MUÑOZ, AZUCENA')
  105. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  106. NUMHI, NOMEM) values (420, 130, 450, 22/10/66, 19/11/88, 400,null, 0,
  107. 'FIERRO, CLAUDIA')
  108. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  109. NUMHI, NOMEM) values (430, 122, 650, 26/20/67, 19/11/88, 210,null, 1,
  110. 'MORA, VALERIANA')
  111. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  112. NUMHI, NOMEM) values (440, 111, 760, 26/09/66, 28/02/86, 210, 100, 0,
  113. 'DURAN, LIVIA')
  114. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  115. NUMHI, NOMEM) values (450, 112, 880, 21/10/66, 28/02/86, 210, 100, 0,
  116. 'PEREZ, SABINA')
  117. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  118. NUMHI, NOMEM) values (480, 111, 760, 04/04/65, 28/02/86, 210, 100, 1,
  119. 'PINO, DIANA')
  120. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  121. NUMHI, NOMEM) values (490, 112, 880, 06/06/64, 01/01/88, 180, 100, 0,
  122. 'TORREZ, HORACIO')
  123. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  124. NUMHI, NOMEM) values (500, 111, 750, 08/10/65, 01/01/87, 200, 100, 0,
  125. 'VAZQUEZ, HONORIA')
  126. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  127. NUMHI, NOMEM) values (510, 110, 550, 04/05/66, 01/11/86, 200,null, 1,
  128. 'CAMPOZ, ROMULO')
  129. INSERT into TEMPLE (NUMEM, NUMDE, EXTEL, FECNA, FECIN, SALAR, COMIS,
  130. NUMHI, NOMEM) values (550, 111, 780, 10/01/70, 21/01/88, 100, 120, 0,
  131. 'SANTOS, RANCHO')  
  132.  
  133. ------------------ok
  134.  
De esta manera cuando corro los ejemplos en la máquina me quedan
exactamente los mismos resultados que en el libro. Todo iba bien hasta
el capitulo 16:inclusion de sentencias sql en programas.
Hasta ahora el libro no había especificado ningún SGBD y yo use MS-SQL
SERVER 7 y todo me había salido bien. Ahora tampoco especificaba ningún
compilador de C. Yo utilizo el Turbo C++ 3.1 de Borland. Hasta ahora no
he conseguido compilar el programa completo en C, que dan de ejemplo.
El programa es el siguiente:

Lo que yo hago es:
1)Primero activo el SGBD MS-SQL SERVER 7, observo que se carge en la
memoria.
2)Luego abró el programa sql.cpp(el programa en C) con Turbo c++ 3.1
Código: Text
  1. /*
  2. Librerías de Include que pueden variar dependiendo del compilador y
  3. precompilador
  4. */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10.  
  11. #define NOTFOUND 100
  12.  
  13. /*
  14. FICHEROS DE E/S
  15. */
  16.  
  17. FILE *inciden;
  18.  
  19. FILE *datos;
  20.  
  21. FILE *report;
  22.  
  23. /*
  24. Estructuras de E/S
  25. */
  26.  
  27. /* inreg; registro de incidencias*/
  28.  
  29. struct {
  30. int num_emp;
  31. int codigo;
  32. } inreg;
  33.  
  34. /* regsal: Report de salida */
  35.  
  36. struct {
  37. int numero;
  38. char fill[8];
  39. char text[71];
  40. } resal;
  41.  
  42. static char format1[]="%3u1%un";
  43. static char format2[]="%3u%3u%8s%3u%1u%2u%20sn";
  44. static char format3[]="%3u%7s%7Os%n";
  45.  
  46. EXEC SQL INCLUDE SQLCA;
  47.  
  48. /*Tabla de empleados*/
  49.  
  50. EXEC SQL DECLARE TEMPLE TABLE
  51.       (NUMEM INTEGER NOT NULL,
  52.        NUMDE INTEGER NOT NULL,
  53.        EXTEL SMALLINT NOT NULL,
  54.        FECNA DATE     NOT NULL,
  55.        FECIN DATE     NOT NULL,
  56.        SALAR DECIMAL (5,0) NOT NULL,
  57.        COMIS DECIMAL (5,0),
  58.        NUMHI SMALLINT      NOT NULL,
  59.        NOMEM VARCHAR(20)   NOT NULL);
  60.  
  61. /* Dentro de la declare Section se incluirán todos
  62. los campos necesarios para las sentencias SQL.
  63. Son los que se leerán del fichero de datos.
  64. */
  65.  
  66. EXEC SQL BEGIN DECLARE SECTION;
  67.  
  68. int numen;
  69. int numde;
  70. char fecha[9];
  71. int salar;
  72. int numhi;
  73. struct {
  74. short int nombrel;
  75. char nombrev[21];
  76.  
  77. } nomem;
  78.  
  79. EXEC SQL END DECLARE SECTION;
  80.  
  81. EXEC SQL WHENEVER SQLERROR GOTO TERROR;
  82. EXCEC SQL WHENEVER SQLWARNING CONTINUE;
  83.  
  84. /*Main function*/
  85.  
  86. main()
  87. {
  88. inciden =fopen("DD:FICHIN,"r,recfm=F,recl=4");
  89. datos =fopen("DD:FICHD,"r,recfm=F,recl=40");
  90. report =fopen("DD:REPORT","W");
  91.  
  92. while (!feof(inciden))
  93.    {
  94.    fsanf(inciden,format1, inreg.num-emp,inreg.codigo);
  95.    numem=inreg.num_emp;
  96.    if(inreg.codigo==1)
  97.        {
  98.        EXEC SQL
  99.        DELETE FROM TABLE
  100.        WHERE NUMEM=:numem;
  101.        if(SQLCODE=100)
  102.            {
  103.            strcpy("NO EXISTE EN
  104. TEMPLE",regsal.text);
  105.            }
  106.      else
  107.            {
  108.            strcpy("CAUSA BAJA EN LA
  109. EMPRESA",regsal.text);
  110.            }
  111.        }
  112.        else       {
  113.       fscaf (datos, format2, numem,
  114.                    
  115.          numde,
  116.                    
  117.          fecna,
  118.                    
  119.          salar,
  120.                    
  121.          numhi,
  122.                    
  123.          nombrel,
  124.                    
  125.          nombrev,);
  126.       EXECSQL
  127.       INSERT INTO TEMPLE
  128.       VALUES (:numem,
  129.             :numde;
  130.             0,
  131.             :fecna,
  132.             CURRENT DATE,
  133.             :salar,
  134.             NULL,
  135.             :numhi,
  136.             :nombre);
  137.                  
  138. strcpy("CAUSA ALTA EN LA EMPRESA", regsal.text);
  139.  
  140.       }  
  141.    
  142.    fprinf (report, format3, regsal.numero,
  143.                    
  144.         regsal.fill,
  145.                    
  146.         regsal.text);
  147.                    
  148.          
  149.                    
  150.            }//Fin del while
  151.         fclose(inciden);
  152. fclose(datos);
  153. fclose(report);
  154.  
  155. TERROR:
  156.    sql_err()
  157. }
  158.  
  159. /*****Final del Main****/
  160.  
  161.  
  162.  
  163. sql_err()
  164. {
  165. if(SQLCODE= -803)
  166.    {
  167.    strcpy("EMPLEADO YA EXISTENTE", regsal.text);
  168.    }
  169. else
  170.     {
  171.     strcpy("ERROR SQL AL PROCESAR EMPLEADO", regsal.text);
  172.     }
  173.     fprinf (report, format3, resal.numero,
  174.                    
  175.      resal.fill,
  176.                    
  177.      resal.text);
  178. fclose(inciden);
  179. fclose(datos);
  180. fclose(report);
  181. }                  
  182.      
  183.  
  184.  
  185.  
Haga lo que haga el programa no me compila.Estuve investigando por la
red y dicen que el Turbo c++ no puede trabajar con bases de datos. Yo
he usado este compilador desde hace bastante tiempo y con el he hecho
de todo: juegos, animaciones, reproductores de sonido, editores de
texto y mucho más, se podría decir que le he tomado cariño ha esta
herramienta.
Antes de pasarme a un compilador de C mas "moderno" como visual c++ o
Dev-c++, me gustaría sacarme esta duda: ¿Realmente es imposible que el
Turbo c++ trabaje con bases de datos? ¿No hay alguna librería,archivo
de cabecera ,suplemento o "truco" que me pueda descargar para que las
admita?¿Si quiero trabajar con bases de datos en C, realmente tengo que
dejar este compilador?
PD: bueno eso es todo, muchas gracias por la atención

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Diferencia entre BC y TC
« Respuesta #3 en: Lunes 27 de Octubre de 2008, 15:24 »
0
Cita de: "123celes"
Haga lo que haga el programa no me compila

No especificas por qué no te compila: ¿qué errores te da?

123celes

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Diferencia entre BC y TC
« Respuesta #4 en: Lunes 27 de Octubre de 2008, 17:36 »
0
Lo siento, los errores que me da el compilador son:

Compiling SQL.C:

Error SQL.C 45: Declaration synstax error
Error SQL.C 49: Variable 'EXEC' is initialized more than once
Error SQL.C 49: Declaration synstax error
Error SQL.C 65: Variable 'EXEC' is initialized more than once
Error SQL.C 78: Variable 'EXEC' is initialized more than once
Error SQL.C 78: Declaration synstax error
Error SQL.C 80: Variable 'EXEC' is initialized more than once
Error SQL.C 80: Declaration syntax error
Error SQL.C 81: Declaration syntax error
Error SQL.C 87: Function call missing )
Error SQL.C 87: Unterminated string or character constant
Error SQL.C 88: Unterminated string or character constant
Error SQL.C 93: Function 'fsanf' should have a prototype
Error SQL.C 93: 'num' is not a member of 'struct'
Error SQL.C 93: Undefined symbol 'emp'
Error SQL.C 94: Undefined symbol 'numem'
Error SQL.C 97: Statement missing ;
Error SQL.C 100: Undefined symbol 'SQLCODE'
Error SQL.C 102: Undefined symbol 'regsal'
Error SQL.C 113: Function 'fscaf'should have a prototype
Error SQL.C 115: Undefined symbol 'fecna'
Error SQL.C 118: Undefined symbol 'nombrel'
Error SQL.C 119: Undefined symbol 'nombrev'
Error SQL.C 119: Expression syntax
Error SQL.C 119: Too many error or warning messages

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Diferencia entre BC y TC
« Respuesta #5 en: Lunes 27 de Octubre de 2008, 19:50 »
0
Pues claro. Como te decía en mi primera respuesta.

Cita de: "123celes"
EXEC SQL INCLUDE SQLCA;

Esto no es C puro, por tanto no puede ir así a pelo. El compilador de C no entiende qué significa esta sentencia, porque no es C, por lo tanto te va a dar error. Y así con todas las líneas de sentencias SQL que tengas. Sin embargo existen lenguajes (como CSQL o un preprocesador que convierta las sentencias SQL a C) que sí aceptan la mezcla, pero ni de broma con un compilador C estándar, ya sea TC, VC o gcc, no van a compilar.

123celes

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Diferencia entre BC y TC
« Respuesta #6 en: Martes 28 de Octubre de 2008, 11:55 »
0
Muchas gracias por tu respuesta. Supongo que buscare un nuevo compilador de C. Escuche cosas buenas de un tal PRO * C. Veré como funciona. Una cosita más esos compiladores que aceptan la mezcla de C y SQL ¿Pueden hacer todo lo que los compiladores de C standart pueden, es decir programación gráfica, manipular el teclado, joystcik, rutinas ratón, reproducir sonido y eso?

Sinceramente te agradezco el tiempo que te tomaste para con mis respuestas, muchas gracias.

Estos enlaces pueden ser interesantes.

ftp://garbo.uwasa.fi/pc/programming/

flipcode.com/archives/

monroeccc.edu/ckelly/game_programming.htm

Dentro de este último enlace recomiendo el ejemplo de Ray Tracer para compilar con el Borland c++ (modelo de memoria grande), ¡Es impresionante!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Diferencia entre BC y TC
« Respuesta #7 en: Martes 28 de Octubre de 2008, 12:13 »
0
Cita de: "123celes"
¿Pueden hacer todo lo que los compiladores de C standart pueden,

En teoría si incluyes las librerías necesarias no debería haber problema, aunque no están hechos para eso.

Cita de: "123celes"
Estos enlaces

¡Gracias por los enlaces! Siempre se agradece. Sigamos compartiendo.  :beer:

123celes

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Diferencia entre BC y TC
« Respuesta #8 en: Miércoles 29 de Octubre de 2008, 16:35 »
0
OK; muchas gracias por tu paciencia y por tus repuestas.

Econtré un enlace interesante que tiene mucho código fuente en lenguaje C:
planet-source-code.com/vb/default.asp?lngWId=3