Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-02-2014
ralmic ralmic is offline
Miembro
NULL
 
Registrado: ene 2014
Posts: 11
Poder: 0
ralmic Va por buen camino
tquery a archivo

Hola estimados, necesito pasar los datos de un tquery a un archivo de texto o csv para después agregar estos datos a una tabla igual que se encuentra en otra base de datos, ya hice las conexiones. mi base de datos es sybase 9, y trabajo en c++ xe3, intente migrarlo con sql incrustado en c++ usando la opción output de sybase pero me da un error que esta mala la sentencia. lo pruebo en el isql y me importa el archivo sin problemas. gracias de antemano.
Responder Con Cita
  #2  
Antiguo 11-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ralmic.

Código:
void QueryToTxt(TQuery *qy, const String aFileName)
{
  String tmp;

  TStrings *sl = new TStringList;
  __try {
    qy->Close();
    qy->Open();
    while (!qy->Eof) {
      tmp = "";
      for(int i=0; i<qy->Fields->Count; i++)
        tmp += qy->Fields->Fields[i]->AsString + ",";
      tmp.SetLength(tmp.Length()-1);
      sl->Add(tmp);
      qy->Next();
    }
    qy->Close();
    sl->SaveToFile(aFileName);
  } __finally {
    delete sl;
  }
}
Ejemplo de uso:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Query1->SQL->Text = "SELECT * FROM COUNTRY";
  QueryToTxt(Query1, "C:\\Carpeta\\Query.txt");
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 11-02-2014
ralmic ralmic is offline
Miembro
NULL
 
Registrado: ene 2014
Posts: 11
Poder: 0
ralmic Va por buen camino
Gracias había hecho un código parecido, no andaba tan perdido, ahora para agregar esos datos a la tabla, como hacer para que a las cadenas, fechas y demas les ponga comillas y asi poder agregarlos o este código es suficientemente inteligente y hace eso??
Responder Con Cita
  #4  
Antiguo 11-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ralmic.

La función que hice no agrega comillas, pero con un simple cambio podes indicarle el formato que deseas:
Código:
void QueryToTxt(TQuery *qy, const String aFileName, const String Quote)
{
  String tmp;

  TStrings *sl = new TStringList;
  __try {
    qy->Close();
    qy->Open();
    while (!qy->Eof) {
      tmp = "";
      for(int i=0; i<qy->Fields->Count; i++)
        tmp += Format("%s%s%s,", ARRAYOFCONST(((String)Quote,
          (String)qy->Fields->Fields[i]->AsString, (String)Quote)));
      tmp.SetLength(tmp.Length()-1);
      sl->Add(tmp);
      qy->Next();
    }
    qy->Close();
    sl->SaveToFile(aFileName);
  } __finally {
    delete sl;
  }
}
Ejemplo:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 ...
 // Sin comillas
 QueryToTxt(Query1, "C:\\Pruebas\\NoQuote.txt","");

 // Con comillas simples
 QueryToTxt(Query1, "C:\\Pruebas\\SingleQuote.txt",'\'');

 // Con comillas dobles
 QueryToTxt(Query1, "C:\\Pruebas\\DoubleQuote.txt",'"');
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 11-02-2014
ralmic ralmic is offline
Miembro
NULL
 
Registrado: ene 2014
Posts: 11
Poder: 0
ralmic Va por buen camino
gracias es excelente tu código, realmente quise modificarlo para mis necesidades soy un poco novato en builder y parece que no hay mucha ayuda. con este método le pone comilla a todo no importa que sea carácter o no lo que me faltaría es como pornerle comillas a los valores que no sean numéricos. para poder a agregarlos a un a tabla. será posible?? . saludos.
Responder Con Cita
  #6  
Antiguo 11-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ralmic.
Cita:
Empezado por ralmic Ver Mensaje
...
lo que me faltaría es como pornerle comillas a los valores que no sean numéricos. para poder a agregarlos a un a tabla. será posible?? ...

Si claro,
Código:
void QueryToTxt(TQuery *qy, const String aFileName, const String Quote)
{
  String tmp;
  TStrings *sl = new TStringList;

  __try {
    qy->Close();
    qy->Open();
    while (!qy->Eof) {
      tmp = "";
      for(int i=0; i<qy->Fields->Count; i++)
        tmp += qy->Fields->Fields[i]->InheritsFrom(__classid(TNumericField)) ?
               qy->Fields->Fields[i]->AsString + "," :
               Quote+qy->Fields->Fields[i]->AsString+Quote + ",";
      tmp.SetLength(tmp.Length()-1);
      sl->Add(tmp);
      qy->Next();
    }
    qy->Close();
    sl->SaveToFile(aFileName);
  } __finally {
    delete sl;
  }
}
Uso:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  QueryToTxt(Query1, "C:\\Pruebas\\DoubleQuote.txt",'"');
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
capacidad del tquery? nextor Conexión con bases de datos 4 28-05-2010 01:10:13
consulta con TQuery bastian Conexión con bases de datos 6 26-02-2009 17:59:51
Problemas con Tquery guiasur Conexión con bases de datos 2 28-11-2007 14:33:24
TQuery nenufer Conexión con bases de datos 2 22-05-2006 16:41:03
Leer un TQuery y armar un archivo de texto Oscar25 Conexión con bases de datos 1 01-09-2004 16:21:51


La franja horaria es GMT +2. Ahora son las 12:36:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi