• Sábado 11 de Mayo de 2024, 04:57

Autor Tema:  Creacion De Tablas Temporales  (Leído 7112 veces)

juan_0986

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: pe
    • Ver Perfil
Creacion De Tablas Temporales
« en: Sábado 23 de Febrero de 2008, 02:54 »
0
buenas noches que tal sr F_tanori, necesito jalar datos de una tabla plan_ctas hecha en acces, para esto dependiendo el año puedo obtener datos de plan_ctas2007, plan_ctas2008,etc; para esto en el sql creo el sgt procedimiento almacenado

CREATE PROCEDURE plan_ctas @numcta varchar(15),@nomcta varchar(35)
AS
create table #planctas(
   num_cta varchar(15),
   nom_cta varchar(35))
insert into #planctas values(@numcta,@nomcta)
select * from #planctas

lo que estoy haciendo es crearme una tabla temporal #planctas donde cargare lo datos de la tabla que se encuentra en acces; despues de crear la tabla hago la inserccion de registros, y ademas debe devolverme el select de la tabla temporal para almacenarlo en un datawindows en el power builder, claro que ese datawindows hace referencia a mi store procedure; hasta aqui esta todo bien el proceso corre perfectamente

ahora en el power builder lo primero que hice fue crearme un cursor para seleccionar el num_cta y el nom_cta de la tabla en acces, la tabla del acces que almacena el plan de cuentas del 2007 es "enct0107"

declare cur cursor for select num_cta,nom_cta from enct0107 where len(num_cta)=7 order by num_cta
using trans2;
open cur;
fetch cur into :nucta,:nocta;
do until trans2.sqlcode=100
   /*aqui estoy declarando el procedimiento que cree en el sql*/
   DECLARE cargar_ctas PROCEDURE FOR plan_ctas     @numcta=:nucta,@nomcta=:nocta;
   EXECUTE cargar_ctas;
   
   fetch cur into :nucta,:nocta;
loop
close cur;

bueno pero cuando hjago el retrieve en mi datawindows solo me devulve un registro; cuando la tabla en acces tiene muchos mas, bueno no se que estare haciendo mal o cual cree que pueda ser mi error; espero pueda ayudarme

juan_0986

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: pe
    • Ver Perfil
Re: Creacion De Tablas Temporales
« Respuesta #1 en: Domingo 24 de Febrero de 2008, 15:26 »
0
Ho hay ningun forista que tenga una idea de como puedo resolver el problema?? o acaso no me explico bien?? espero puedan ayudarme!!!

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Creacion De Tablas Temporales
« Respuesta #2 en: Lunes 25 de Febrero de 2008, 08:29 »
0
Hola,


Al menos yo no he entendido lo que deseas hacer

deseas pasar una tabla de access a Sql server?



Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

juan_0986

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: pe
    • Ver Perfil
Re: Creacion De Tablas Temporales
« Respuesta #3 en: Lunes 25 de Febrero de 2008, 21:14 »
0
bueno gracias por responder; lo que yo deseo ex extarer datos de una tabla de access desde el`power builder, pero recien cuando ejecuto mi aplicacion sabre de que tabla los quiero extraer; por eso no puedo hacer un select de esta manera:

select * from plan_ctas_2007 ;

por que recien cuado el usuario ingresa sabre si quiero de la tabla plan_ctas_2007 o  plan_ctas_2008 o plan_ctas_2009

ahora si me dejo entender??, esto lo puedo hacer con un choose case de esra forma
choose case año_act
 case 2007
  select * from plan_ctas_2007
 case 2008
  select * from plan_ctas_2008
end choose
y asi lo podria hacer pero tendria que aumentar un case x cada año ya que esas tablan recien se cream al iniciar el año

bueno espero me haya entendido y pueda ayudarme

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Creacion De Tablas Temporales
« Respuesta #4 en: Miércoles 27 de Febrero de 2008, 03:27 »
0
Bueno puedes hacer varias cosas

1 - Crear un Datawindow o un DataStore y utilizar el metodo Create y crearlo apartir de una cadena don almacenes tu Sentencia SQL
aqui hay un ejemplo (http://www.mtbase.com/foros/respuestas. ... werBuilder ), pero en la ayuda de PB viene muy claro

2- Puedes utilizar SQL Dinamico con el objeto SQLSA, para ejecutar SQL como una cadena
http://foros.solocodigo.com/index.php?showtopic=29988

3- Incluso puedes Ejecutar procedimientos Almacenados de ser necesario
http://foros.solocodigo.com/index.php?showtopic=32306
http://foros.solocodigo.com/index.php?showtopic=29987
http://foros.solocodigo.com/index.php?showtopic=9965

4-  Puedes tambien ejecutar SQL en cadenas con Execute Immeditate
http://foros.solocodigo.com/index.php?showtopic=5012
http://www.mtbase.com/foros/respuestas.jsp...ro=PowerBuilder

5- Crear tablas vinculadas de SQL server en Access y manipularlas como si estuvieran en access, para hacer los traspasos de Base a base

Espero que algo de esto te sirva

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

juan_0986

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: pe
    • Ver Perfil
Re: Creacion De Tablas Temporales
« Respuesta #5 en: Sábado 1 de Marzo de 2008, 15:39 »
0
Que tal bueno gracias por la ayuda brindada, lo que mas se ajusta a mis necesidades es el cursor dinamico que se crea en el power ya que tengo que
extraer los datos de una data en acces bueno mire la sentencia del sqlsa tuve que agregarle lo sgt para poder obtener los resultados que necesitaba:

1) trans2 es una variable donde almaceno mi transaccion de mi data en acces, cabe recalcar que la conexion es exitosa
2) utilizo el do until por que necesito recuperar todas las ctas que tengo en la tabla, ya que sin el do until solo me recupera un registro
3)tengo una tabla la cual hace mi refrencia el datawindow dw_1 donde solo inserto los registros recuperados con el cursor, mas no los guardo por que solo quiero mostrarlos no quiero que quede almacenado en mi tabla

long reg
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM "SELECT num_cta from enct0108 where len(num_cta)=7 order by num_cta" using trans2;
OPEN DYNAMIC my_cursor ;
FETCH my_cursor INTO :ncta;
do until trans2.sqlcode=100
                reg=dw_1.insertrow(0)
   dw_1.object.num_cta[reg]=ncta
   FETCH my_cursor INTO :ncta;
loop
CLOSE my_cursor;
messagebox('','ok')

bueno la recuperacion de datos es exitosa me muetra los datos de la tabla de acces a la que hace referencia miu cursor, ahora el problema es despues de el mensaje ok; no puedo usar ningun boton de comando de la ventana donde esta mi dw con los datos recuperados, quisiera saber si estoy haciendo algo malo; por que el cursor ya esta cerrado, por lo general no puedo usar ningun comando de la ventana mientras el cursor este abierto, espero pueda ayudarme