Borland C++ Builder 6 Conversion

Iniciado por joaco97, 4 Julio 2013, 19:28 PM

0 Miembros y 1 Visitante están viendo este tema.

joaco97

Quiero convertir AnsiString a TString * porque quiero modificar el ciodigo SQL de una consulta desde c++ alguien me puede pasar el codigo por favor. Gracias

ecfisa

Hola.

Si entendí bién tu consulta se puede asignar de forma directa.

Ejemplo:
Código (cpp) [Seleccionar]

...
{
  AnsiString s = "SELECT NOMBRE, APELLIDO FROM PERSONAS";
  TStrings  *TS = new TStringList;

  __try {
    TS->Text = s;
    ShowMessage(TS->Text);
  }
  __finally {
   TS->Free();
  }
}


Saludos :)

joaco97

Si muchas gracias por tu respuesta.

joaco97

Mira yo escribo este codigo:

AnsiString SQL = "SELECT * FROM LIBROS";
TStrings *TS = new TStringList;

TS->Text = SQL;
dtaBiblioteca2->ConsultaLibrosSQL->SQL->Assign(TS->Text);

Me tira dos errores:

cannot convert 'AnsiString' to 'TPersistent *'
type mismatch in parameter 'source' (wanted 'TPersistent *', got 'AnsiString')

Que podria ser?

ecfisa

Hola.


Supongo que dtaBiblioteca2 es un TDataModule y aunque desconozco que componente es ConsultaLibrosSQL, te diría que estás asignando mal el texto de la consulta. Debería ser:

Código (cpp) [Seleccionar]

{
  AnsiString SQLStr = "SELECT * FROM COUNTRY";
  TStrings *TS = new TStringList;

  TS->Text = SQLStr;
  Query->Close();
  Query->SQL->Clear();
  Query->SQL->Assign(TS);
  Query->Open();
}

Pero de tu primer mensaje no divisé a donde apuntaba tu consulta, ahora viendo el uso, no tiene sentido todo ese código previo.  Simplemente hace:

Código (cpp) [Seleccionar]

{
  Query->Close();
  Query->SQL->Text = "SELECT * FROM COUNTRY";
  Query->Open();
}

Con el mismo resultado.

Si la consulta que envias al motor es muy extensa te conviente usar el método Add()  para darle mas legibilidad al código. Es importante en este caso usar previamente el métod Clear(), para eliminar cualquier residuo de la propiedad SQL(de tipo TStrings).

Por ejemplo:
Código (cpp) [Seleccionar]

{
  Query->Close();
  Query->SQL->Clear();
  Query->SQL->Add("UPDATE TABLA SET PRECIO =");
  Query->SQL->Add("CASE OPICION");
  Query->SQL->Add("WHEN 'CASO1' THEN PRECIO * 0.5");
  Query->SQL->Add("WHEN 'CASO2' THEN PRECIO * 0.3");
  Query->SQL->Add("ELSE PRECIO * 0.25 END");
  Query->Open();
}


Saludos :)




joaco97

Mucha gracias, la verdad me re ayudaste, pude terminar el programa.