Ver Mensaje Individual
  #12  
Antiguo 19-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
es que no tiene mucho secreto mas...es aquella consulta, tal cual. te tendria que funcionar si la tabla no existe dentro de productos.dbf...a mi, al menos, me funciona asi, y lo uso bastante. Busca el parametro 'in' de sql, que es para acceder a bases de datos externas a la conectada (aunque es bastante entendible ya por los ejemplos) a ver si sacas algo en claro.

Te pongo un ejemplo en la que uso esta forma

Código Delphi [-]
        s := ExtractFileName(OpenDialog1.Filename);             // Nom de l'arxiu
        p := ExtractFilePath(OpenDialog1.Filename);             // path de l'arxiu
        ...
        c.Connected := false;                                   // Fem conexió a l'arxiu
        c.LoginPrompt := false;
        c.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;'+
        'Data Source='+ ExtractFilePath(OpenDialog1.Filename) + ';Mode=Share Deny None;Extended Properties="text;HDR=Yes;FMT=Fixed";'+
        'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDBatabase Password="";'+
        'Jet OLEDB:Engine Type=96;Jet OLEDBatabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;'+
        'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;'+
        'Jet OLEDB:Encrypt Database=False;Jet OLEDBon''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;'+
        'Jet OLEDB:SFP=False';
        c.Connected := true;
        ...
        q.Connection := c;                                      // insert massiu a ARTICLES_TMP
        q.Active := false;
        q.SQL.Text :=  'select ' +
                        'id, '+
                        'cod_mar, ' +
                        'cod_fam, ' +
                        'IIF((select marge from MARQUES in ''' + str_articles + ''' where id = cod_mar),'+
                        '(select marge from MARQUES in ''' + str_articles + ''' where id = cod_mar),0) as marge_tmp, '+
                        '(select id_linia from FAMILIES in ''' + str_articles + ''' where id = cod_fam) as cod_lin, '+
                        '(select DESCR from FAMILIES in ''' + str_articles + ''' where id = cod_fam) as FAMILIA, ' +
                        '(select DESCR from MARQUES in ''' + str_articles + ''' where id = cod_mar) as MARCA, ' +
                        'Trim(IIF(DESCR1,Trim(DESCR1),'' '') + '' '' + IIF(DESCR2,Trim(DESCR2),'' '')) as DESCR,' +
                        'PMin, ' +
                        'PRec, ' +
                        'PBase, ' +
                        'iif(iif(PMin > PRec,PMin,PRec) = 0, PBASE * 116/(100 - marge_tmp),iif(PMin > PRec,PMin,PRec)) as PVP,'+
                        'iif(stock = ''&'',true,false) as STOCK ' +
                        'into ARTICLES_TMP in ''' + str_articles + ''' from ' + s;
        q.ExecSQL;
        ...

como ves, en esencia es lo mismo que te he puesto, solo que calcula los argumentos que necesito. A ver si el unico problema que vas a tener es que usas las comillas dobles. Prueba de hacer + QuotedStr(Ruta_archivo_destino,'''') o bien poner las comillas tal como se ponen en una cadena (''')

Última edición por coso fecha: 19-09-2008 a las 17:19:59.
Responder Con Cita