Ver la Versión Completa : MS Access: Duda en Sintaxis para CREATE TABLE
darkamerico
18-04-2013, 17:52:19
Saludos amigos, estoy realizando una aplicacion que se enlaza a un sistema que trabaja con Access, de modo que cada mes, se agrega una tabla con una BD con los datos procesados del mes actual.
La BD se llama:"MOROSIDAD link.mdb" (Con espacio en blanco).
La Tabla que debe crearse tiene el formato: "Aviso Corte Marzo 2013". Dicha tabla solo tiene 2 campos de texto.
Hice lo siguiente:
DM_Access.q_CreateTable.Close;
DM_Access.q_CreateTable.SQL.Text:='CREATE TABLE Aviso Corte ' + cboMesActual.Text + ' ' + cboAnioActual.Text + '(RC TEXT(16), SUMINISTRO TEXT(16))';
DM_Access.q_CreateTable.ExecSQL;
Pero me arroja un error de sintaxis.
Aprecio la ayuda.
Atte.
Americo
Casimiro Notevi
18-04-2013, 18:44:00
Recuerda poner los tags al código fuente, ejemplo:
http://www.clubdelphi.com/images/UtilizarTAGs.png
Gracias :)
ecfisa
18-04-2013, 18:49:00
Hola darkamerico.
Pegale una ojeada a este artículo: New...Access Database from Delphi (http://delphi.about.com/od/database/l/aa072401b.htm)
Saludos. :)
darkamerico
22-04-2013, 17:37:10
Bueno luego de romperme el coco un rato, finalmente logre terminar este problema satisfactoriamente, aki muestro la solución:
procedure TForm1.brnLlenaAvisoM3Click(Sender: TObject);
var
nombreMes, nombreTabla, nombreXtractTabla:string;
TableNames: TStringList;
i, posPunto:integer;
begin
TableNames := TStringList.Create;
if(StrToInt(cboMesActual.Text)=1)then nombreMes:='Enero';
if(StrToInt(cboMesActual.Text)=2)then nombreMes:='Febrero';
if(StrToInt(cboMesActual.Text)=3)then nombreMes:='Marzo';
if(StrToInt(cboMesActual.Text)=4)then nombreMes:='Abril';
if(StrToInt(cboMesActual.Text)=5)then nombreMes:='Mayo';
if(StrToInt(cboMesActual.Text)=6)then nombreMes:='Junio';
if(StrToInt(cboMesActual.Text)=7)then nombreMes:='Julio';
if(StrToInt(cboMesActual.Text)=8)then nombreMes:='Agosto';
if(StrToInt(cboMesActual.Text)=9)then nombreMes:='Setiembre';
if(StrToInt(cboMesActual.Text)=10)then nombreMes:='Octubre';
if(StrToInt(cboMesActual.Text)=11)then nombreMes:='Noviembre';
if(StrToInt(cboMesActual.Text)=12)then nombreMes:='Diciembre';
DM_Access.q_CreateTable.SQL.Text:='';
DM_Access.conn2.GetTableNames(TableNames, true);
for i := 0 to TableNames.Count - 1 do
begin
posPunto:=pos(']',TableNames[i]);
nombreXtractTabla:=copy(TableNames[i],posPunto+2, length(TableNames[i]));
if(nombreXtractTabla='[AvisoM3 ' + nombreMes + ' ' + cboAnioActual.Text + ']')then
begin
DM_Access.q_CreateTable.Close;
DM_Access.q_CreateTable.SQL.Text:='DROP TABLE [AvisoM3 ' + nombreMes + ' ' + cboAnioActual.Text + ']';
DM_Access.q_CreateTable.ExecSQL;
end;
end;
DM_Access.q_CreateTable.Close;
DM_Access.q_CreateTable.SQL.Text:='CREATE TABLE [AvisoM3 ' + nombreMes + ' ' + cboAnioActual.Text + '] (SUMINID NUMBER, RC TEXT(16), CSUreEA NUMBER, Periodo TEXT(50), SUMINISTRO NUMBER)';
DM_Access.q_CreateTable.ExecSQL;
DM_Access.q_ListaAvisoM3.Close;
DM_Access.q_ListaAvisoM3.Params[0].AsInteger:=StrToInt(cboAnioActual.Text);
DM_Access.q_ListaAvisoM3.Params[1].AsInteger:=StrToInt(cboMesActual.Text);
DM_Access.q_ListaAvisoM3.Open;
while not DM_Access.q_ListaAvisoM3.Eof do
begin
DM_Access.q_INSAvisoM3.Close;
DM_Access.q_INSAvisoM3.SQL.Text:='INSERT INTO [AvisoM3 ' + nombreMes + ' ' + cboAnioActual.Text + '] VALUES(' +
DM_Access.q_ListaAvisoM3.FieldByName('SUMINID').AsString + ',' +
chr(39) + DM_Access.q_ListaAvisoM3.FieldByName('SUMCHCODIGORUTA').AsString + chr(39) + ',' +
DM_Access.q_ListaAvisoM3.FieldByName('CSUreEA').AsString + ',' +
DM_Access.q_ListaAvisoM3.FieldByName('CSUinPeriodo').AsString + ',' +
DM_Access.q_ListaAvisoM3.FieldByName('SUMCHCODIGO').AsString + ')';
DM_Access.q_INSAvisoM3.ExecSQL;
DM_Access.q_ListaAvisoM3.Next;
end;
ShowMessage('Tabla AvisoM3 Llenada Satisfactoriamente!');
end;
Saludos a todos
ecfisa
22-04-2013, 18:21:15
Hola darkamerico.
Gracias por publicar la solución ^\||/
Saludos. :)
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.