Clipper/FiveWin - no funciona fwrite

 
Vista:
sin imagen de perfil

no funciona fwrite

Publicado por Rosy (39 intervenciones) el 06/07/2013 01:51:03
Hola, necesito crear un archivo plano y usé la funcion fwrite, sin embargo, cuando posteriormente lo edito, me queda todo en una sola linea y yo necesito que quede una linea debajo de la otra. Usé los caracteres de escape LF y retorno de carro pero aun asi no funciona.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# INCLUDE 'FILEIO.CH'
 
campo01 := "primer campo"
campo02 := "ojola ojala"
campo03 := "1111111"
campo04 := "listo"
 
 
nFile := FCREATE("sal.csv", FC_NORMAL)
 
for i := 1 to 5
 
    cadena := strzero(i,1) + ";" + campo01 + ";" + campo02+";"+ campo03 + ";" + campo04 + chr(10)+chr(13)
 
    FWRITE(nFile, cadena, 40 )
NEXT
 
FCLOSE(nFile)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

ya lo resolvi

Publicado por Rosy (39 intervenciones) el 06/07/2013 02:21:15
ehh!! ya lo resolvi, estaba cometiendo un error, en el largo de la cadena no estaba considerando las 2 posiciones del chr(10)+chr(13), de manera que no era de largo 40 sino de 42, cambié ese detallito y me funcionó.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ya lo resolvi

Publicado por JHONNY (2 intervenciones) el 21/04/2016 02:49:40
hola usted me puedes ayudar como realisar salto de linea con fwrite() osea escribir en la segunda linea en archivo .txt
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ya lo resolvi

Publicado por Rosy (39 intervenciones) el 21/04/2016 12:42:55
Hola Jhonny, en el primer post que mandé con la pregunta inicial está el ejemplo y con codigo y todo, mas claro que eso no puede haber!!

El saldo de linea se hace agregando el chr(10)+chr(13) al final de la linea!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

no funciona fwrite

Publicado por Kandombe (25 intervenciones) el 13/06/2024 18:30:55
ahi va pasele
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
/*=============== T:\HGUI\dbfar\MiDBU.prg                      */
#include <hmg.ch>
#include "Include\MiDBU.ch"
#define Colorito       0xff000000
#define IDX_PAKAGE     01
#define IDX_DATABASE   02
#define IDX_TABLAS     03
#define IDX_REPETIR    04
#define IDX_EDITAR     05
#define IDX_DUPLICAR   06
#define IDX_RAYSQL     07
#define IDX_RELACION   08
#define IDX_TERMINAR   09
#define IDX_MAS        10
#define IDX_OKEY       11
#define IDX_BUSCAR     12
#define IDX_PLAY3      13
#define IDX_CAMBIAR    14
#define IDX_NUEVA_TAB  15
#define IDX_NEWSCHEMA  16
#define IDX_TABLA_PKY  17
#define IDX_SQL        18
#define IDX_NO_CONN    19
#define IDX_SQL_TAB    20
#define IDX_TAB_REL    21
#define IDX_TDESCONO   22
#define IDX_COMPACTA   23
#define IDX_GENPDF     24
#define IDX_DB_OKEY    25
#define IDX_EXCEL      26
#define IDX_USUARIO    27
#define IDX_RUNING     28
#define IDX_CONFIG     29
#define IDX_TOOLS      30
Memvar cArchivo
Memvar Nuevo
Memvar aNomb,aJust,aLong,aHdr,cBase,cCampo,cFiltro
Function Main(cBase)
      PUBLIC cArchivo := ""
      REQUEST DBFCDX
      RDDSETDEFAULT( "DBFCDX" )
      SET CODEPAGE TO SPANISH
      SET LANGUAGE TO SPANISH
      SET DELETED ON
      SET CENTURY ON
      SET DATE FORMAT "dd-mm-yyyy"
      SET EPOCH TO YEAR(DATE())-50
      SET TOOLTIPSTYLE BALLOON
      SET BROWSESYNC ON
      SET NAVIGATION EXTENDED
      cArchivo := iif(cBase==NIL,'',cBase)
      SET DEFAULT ICON TO 'MAIN'
      DEFINE WINDOW owmain AT 0,0 WIDTH 1024 HEIGHT 768 ;
              TITLE NOMSYS ;
              MAIN ;
              ON INIT iif(! Empty(cArchivo), EditarDBF(), )
            DEFINE IMAGELIST imagelis OF owmain ;
                   BUTTONSIZE 50, 50 ;
                   IMAGE { 'ID_TOOLBAR' } ;
                   COLORMASK Colorito ;
                   IMAGECOUNT 30
            DEFINE TOOLBAREX ToolBar_1 OF owmain BUTTONSIZE 50, 50 IMAGELIST 'imagelis' FLAT
                BUTTON cmdope01 ;
                       PICTUREINDEX IDX_NUEVA_TAB ;
                       TOOLTIP "Generar nueva tabla";
                       ACTION NuevaDBF()
                BUTTON cmdope02 ;
                       PICTUREINDEX IDX_EDITAR ;
                       TOOLTIP "Editar una tabla";
                       ACTION EditarDBF()
                BUTTON cmdope03 ;
                       PICTUREINDEX IDX_TABLAS ;
                       TOOLTIP "listar las tablas" ;
                       ACTION MsgInfo( "Listar tablas del directorio" )
                       SEPARATOR
                BUTTON cmdope04 ;
                       PICTUREINDEX IDX_DB_OKEY ;
                       TOOLTIP "detalles de la base de dato" ;
                       ACTION MsgInfo( "Aun en desarrollo")
                BUTTON cmdope05 ;
                       PICTUREINDEX IDX_EXCEL ;
                       TOOLTIP "exportar a excel" ;
                       ACTION MsgInfo( "Aun en desarrollo")
                BUTTON cmdope06 ;
                       PICTUREINDEX IDX_CONFIG ;
                       TOOLTIP "Configuracion de la aplicacion" ;
                       ACTION MsgInfo( "Aun en desarrollo")
                BUTTON cmdope07 ;
                       PICTUREINDEX IDX_USUARIO ;
                       TOOLTIP "Aplicacion de usuarios" ;
                       ACTION MsgInfo( "Aun en desarrollo")
                       SEPARATOR
                BUTTON cmdope08 ;
                       PICTUREINDEX IDX_TERMINAR ;
                       TOOLTIP "finalizar la aplicacion" ;
                       ACTION owmain.Release()
            END TOOLBAR
              DEFINE STATUSBAR FONT 'Consolas' SIZE 11
                      STATUSITEM "BNP-PARIBAS Buenos Aires - Argentina"
                      CLOCK
                      DATE
              END STATUSBAR
      END WINDOW
      Maximize WINDOW owmain
      ACTIVATE WINDOW owmain
RETURN NIL
#include "Include\XAA_EDICION.prg"
#include "Include\XAA_NUEVA.prg"
/*=============== T:\HGUI\dbfar\MiDBU.rc                       */
//
CREAR        BITMAP     IMAGENES\CREAR.BMP
EDITAR       BITMAP     IMAGENES\EDITAR.BMP
SALIR        BITMAP     IMAGENES\SALIR.BMP
FILTRAR      BITMAP     IMAGENES\FILTRAR.BMP
PRIMERO      BITMAP     IMAGENES\PRIMERO.BMP
ANTERIOR     BITMAP     IMAGENES\ANTERIOR.BMP
SIGUIENTE    BITMAP     IMAGENES\SIGUIENTE.BMP
ULTIMO       BITMAP     IMAGENES\ULTIMO.BMP
NUEVO1       BITMAP     IMAGENES\NUEVO1.BMP
EDITAR1      BITMAP     IMAGENES\EDITAR1.BMP
BORRAR       BITMAP     IMAGENES\BORRAR.BMP
CERRAR1      BITMAP     IMAGENES\CERRAR1.BMP
MALOGO       GIF        IMAGENES\MALOGO.GIF
MAIN         ICON       IMAGENES\BASE.ICO
// CUENTA CON 30 ICONOS DE 50x50 Pixels
ID_TOOLBAR   PNG        IMAGENES\ToolBarDX.png
/*=============== T:\HGUI\dbfar\Imagenes\ANTERIOR.BMP          */
/*=============== T:\HGUI\dbfar\Imagenes\base.ico              */
/*=============== T:\HGUI\dbfar\Imagenes\BORRAR.BMP            */
/*=============== T:\HGUI\dbfar\Imagenes\BUSCAR.BMP            */
/*=============== T:\HGUI\dbfar\Imagenes\CERRAR1.BMP           */
/*=============== T:\HGUI\dbfar\Imagenes\crear.bmp             */
/*=============== T:\HGUI\dbfar\Imagenes\editar.bmp            */
/*=============== T:\HGUI\dbfar\Imagenes\EDITAR1.BMP           */
/*=============== T:\HGUI\dbfar\Imagenes\filtrar.bmp           */
/*=============== T:\HGUI\dbfar\Imagenes\malogo.gif            */
/*=============== T:\HGUI\dbfar\Imagenes\NUEVO1.BMP            */
/*=============== T:\HGUI\dbfar\Imagenes\PRIMERO.BMP           */
/*=============== T:\HGUI\dbfar\Imagenes\salir.bmp             */
/*=============== T:\HGUI\dbfar\Imagenes\siguiente.bmp         */
/*=============== T:\HGUI\dbfar\Imagenes\ToolBarDB.png         */
/*=============== T:\HGUI\dbfar\Imagenes\ToolBarDX.png         */
/*=============== T:\HGUI\dbfar\Imagenes\ULTIMO.BMP            */
/*=============== T:\HGUI\dbfar\Include\MiDBU.ch               */
#define TRUE      .T.
#define FALSE     .F.
#define SQuote    CHR(39)
#define DQuote    CHR(34)
#define CSim      CHR(39)
#define Cdob      CHR(34)
#define KeyTab    CHR(9)
#define TeclaTab  CHR(9)
#define BDER      BROWSE_JTFY_RIGHT
#define BIZQ      BROWSE_JTFY_LEFT
#define BCEN      BROWSE_JTFY_CENTER
#define NEGRO     {0,0,0}
#define BLANCO    {255,255,255}
#define BEIGE     {245,243,146}
#define AGUA      {200,241,150}
#define EQICOLOR  {000,128,000} ;
#define FinLinea  Chr(10) + Chr(13)
#define cCurDir   "\" + CurDir() + "\"
#define cIniFile  cCurDir + "BnpSp.ini"
#define NTrim( n ) LTRIM( STR( n, IF( n == INT( n ), 0, 2 ) ))
#define DirActual   GetCurrentFolder() +"\"
#define PrgFiles    GetProgramFilesFolder()+"\"
#define DirDesk     GetDesktopFolder()+"\"
#define DirDocs     GetMyDocumentsFolder()+"\"
#define DirSys      GetSystemFolder()+"\"
#define DirTemp     GetTempFolder()+"\"
#define DirWin32    GetWindowsFolder()+"\"
#define TMemory     NTrim( MemoryStatus( 1 ))
#define DMemory     NTrim( MemoryStatus( 2 ))
#define P1Memory    NTrim( MemoryStatus( 3 ))
#define P2Memory    NTrim( MemoryStatus( 4 ))
#define DMemoryVM   NTrim( MemoryStatus( 6 ))
#define FecHoy      DATE()
#define FechaHoy    DATE()
#define Hoy         DATE()
#define ToDay       Day()
#define MesActual   Month(FecHoy)
#define Anio        Year(FecHoy)
#define WinVersion  WIndowsVersion()
#define HbrVersion  Version()
#define HMGVersion  MiniGuiVersion()
#define NOMSYS    "dbFar"
#define VERSYS    "Version 0.0.99(B)"
#define SISTEMA   NOMSYS + " " + VERSYS
#define nWIDTH    GetDeskTopWidth()
#define nHEIGHT   GetDeskTopHeight()-28
/*=============== T:\HGUI\dbfar\Include\XAA_Edicion.Prg        */
#include <hmg.ch>
Function EditarDBF()
      LOCAL nCamp,aEst,cCarpeta,i,nPos
      PUBLIC aNomb,aJust,aLong,aHdr,cBase,cCampo,cFiltro := ''
      SET SOFTSEEK ON
      IF cArchivo == ''
              cCarpeta := GetCurrentFolder()
              cArchivo := Getfile ( { {'DBFs','*.DBF'} } , 'Abrir base de datos' , cCarpeta , .F. , .T. )
      Endif
      nPos := RAT( '\',cArchivo )
      cCarpeta := SubStr( cArchivo,1,nPos )
      cArchivo := SubStr( cArchivo,nPos+1,Len(cArchivo) )
      nPos := RAT( '.',cArchivo )
      cArchivo := SubStr( cArchivo,1,nPos-1 )
      IF FILE(cCarpeta+cArchivo+'.DBF')
         USE (cCarpeta+cArchivo) ALIAS (cArchivo) EXCLUSIVE NEW
         INDEX ON &(FieldName(1)) TO Aux1
         cBase := Alias()
         nCamp := Fcount()
         aEst  := DBstruct()
         aNomb := {}
         aHdr  := {}
         aJust := {}
         aLong := {}
         For i := 1 to nCamp
           aadd(aNomb,aEst[i,1])
           aadd(aHdr,aEst[i,1])
           aadd(aJust,iif(aEst[i,2]=='N',1,0))
           aadd(aLong,Min(250,Max(Len(aEst[i,1]),aEst[i,3])*iif(aEst[i,3]>5,10,12)))
         Next
         CreaBR()
      Endif
RETURN NIL
STATIC FUNCTION CreaBR()
      DEFINE WINDOW wnedicion AT 80,00 WIDTH nWIDTH-10 HEIGHT nHEIGHT-190;
             TITLE Upper( cArchivo );
             FONT "Arial" SIZE 10;
             MODAL;
             ON RELEASE ( DBCLOSEALL(), Ferase ('Aux1.CDX') )
          DEFINE TOOLBAR ToolBar_1 BUTTONSIZE 58,36 IMAGESIZE 20,20  FLAT BORDER
                  BUTTON PRIMERO;
                          CAPTION '&Primero'      ;
                          PICTURE 'PRIMERO';
                          ACTION ( _BrowseHome('oBrows', 'wnedicion') , wnedicion.oBrows.Value := RecNo() )
                  BUTTON ANTERIOR;
                          CAPTION '&Anterior';
                          PICTURE 'ANTERIOR';
                          ACTION ( _BrowseUp('oBrows', 'wnedicion') , wnedicion.oBrows.Value := RecNo() )
                  BUTTON SIGUIENTE;
                          CAPTION '&Siguiente';
                          PICTURE 'SIGUIENTE';
                          ACTION ( _BrowseDown('oBrows', 'wnedicion') , wnedicion.oBrows.Value := RecNo() )
                  BUTTON ULTIMO;
                          CAPTION '&Ultimo';
                          PICTURE 'ULTIMO';
                          ACTION ( _BrowseEnd('oBrows', 'wnedicion') , wnedicion.oBrows.Value := RecNo() ) SEPARATOR
                  BUTTON NUEVO;
                          CAPTION '&Nuevo';
                          PICTURE 'NUEVO1';
                          ACTION ( NuevoReg() )
                  BUTTON DELE;
                          CAPTION '&Borrar';
                          PICTURE 'BORRAR';
                          ACTION ( Borrar() )
                  BUTTON ZAP;
                          CAPTION '&Pack';
                          PICTURE 'BORRAR';
                          ACTION ( BorrarTodo() )
                  BUTTON CERRAR;
                          CAPTION '&Cerrar';
                          PICTURE 'CERRAR1';
                          ACTION ( cArchivo := '', wnedicion.release )
          END TOOLBAR
          @066,015 LABEL LABEL_1 VALUE 'Buscar:' TRANSPARENT
          @060,070 TEXTBOX Control_1 WIDTH 250 ON ENTER ( Buscar() )
          @066,453 LABEL LABEL_2    VALUE 'Ordenar:' TRANSPARENT
          @060,510 COMBOBOX Combo_1 ITEMS aNomb VALUE 1 WIDTH 250 ON CHANGE ( Ordenar() )
          @068,880 LABEL LABEL_3 VALUE 'Filtrar:' TRANSPARENT
          @060,930 BUTTON FILTRAR CAPTION '...' WIDTH 38 HEIGHT 25 TOOLTIP 'Seleccionar registros' ACTION ( Filtrar() )
          @090,001 BROWSE oBrows WIDTH ( wnedicion.width-25 )  HEIGHT ( wnedicion.height-135 );
                   WIDTHS aLong HEADERS aHdr;
                   FONT "Courier New" SIZE 10;
                   WORKAREA &(cBase);
                   FIELDS aNomb;
                   JUSTIFY aJust;
                   INPLACE;
                   PAINTDOUBLEBUFFER;
                   ON DBLCLICK ( wnedicion.oBrows.AllowEdit := .T. )
      END WINDOW
      SET TOOLTIP BACKCOLOR TO { 255,255,184 } OF wnedicion
      SET TOOLTIP TEXTCOLOR TO { 000,000,000 } OF wnedicion
      wnedicion.oBrows.SetFocus
      ACTIVATE WINDOW wnedicion
RETURN NIL
STATIC FUNCTION Ordenar()
      INDEX ON &(wnedicion.Combo_1.Item(wnedicion.Combo_1.Value)) TO Aux1
      &cBase->(DbGoTop())
      wnedicion.oBrows.Value := &cBase->(RecNo())
      wnedicion.oBrows.Refresh
      wnedicion.oBrows.SetFocus
RETURN NIL
STATIC FUNCTION Buscar()
      cCampo := wnedicion.Combo_1.Item(wnedicion.Combo_1.Value)
      &cBase->(DbSetOrder(1))
      &cBase->(DbGoTop())
      IF ValType(&cCampo) == 'C'
          &cBase->(DbSeek( wnedicion.Control_1.Value ))
      ELSEIF ValType(&cCampo) == 'N'
          &cBase->(DbSeek( Val(wnedicion.Control_1.Value) ))
      ELSEIF ValType(&cCampo) == 'D'
          &cBase->(DbSeek( CtoD(wnedicion.Control_1.Value) ))
      ENDIF
      wnedicion.oBrows.Value := &cBase->(RecNo())
      wnedicion.oBrows.Refresh
      wnedicion.oBrows.SetFocus
RETURN NIL
STATIC FUNCTION NuevoReg()
      &cBase->(DbAppend())
      wnedicion.oBrows.Value := &cBase->(RecNo())
      wnedicion.oBrows.Refresh
      wnedicion.oBrows.SetFocus
RETURN NIL
STATIC FUNCTION Borrar()
      &cBase->(DbDelete())
      &cBase->(DbSkip(-1))
      IF &cBase->(Bof())
          &cBase->(DbGoTop())
      ENDIF
      wnedicion.oBrows.Value := &cBase->(RecNo())
      wnedicion.oBrows.Refresh
      wnedicion.oBrows.SetFocus
RETURN NIL
STATIC FUNCTION BorrarTodo()
      Select(cBase)
      Pack
      DbGoTop()
      wnedicion.oBrows.Value := RecNo()
      wnedicion.oBrows.Refresh
      wnedicion.oBrows.SetFocus
RETURN NIL
STATIC FUNCTION Filtrar()
      cCampo := UPPER(ALLTRIM(FIELD(wnedicion.Combo_1.Value)))
      Select(cBase)
      cFiltro := UPPER(ALLTRIM(InputBox( 'Filtro:' , 'Busqueda' , cFiltro )))
      IF Len(cFiltro) != 0
          IF ValType(&cCampo) == 'C'
              SET FILTER TO ( cFiltro $ &cBase->(&cCampo) )
          ELSEIF ValType(&cCampo) == 'N'
              SET FILTER TO ( Val(cFiltro) == &cBase->(&cCampo) )
          ELSEIF ValType(&cCampo) == 'D'
              SET FILTER TO ( CtoD(cFiltro) == &cBase->(&cCampo) )
          ENDIF
      ELSE
          SET FILTER TO
      ENDIF
      DbGoTop()
      wnedicion.oBrows.Value := RecNo()
      wnedicion.oBrows.Refresh
      wnedicion.oBrows.SetFocus
RETURN NIL
/*=============== T:\HGUI\dbfar\Include\XAA_nueva.Prg          */
#include <hmg.ch>
Function NuevaDBF()
      Private Nuevo := .T.
      DEFINE WINDOW winnew AT 60, 0 WIDTH 800 HEIGHT 600;
              TITLE 'Crear o modificar una base de datos';
              MODAL;
              ON INIT InicializaVariables()
              DEFINE TOOLBAR ToolBar_1 BUTTONSIZE 58,36 IMAGESIZE 20,20  FLAT BORDER
                      BUTTON NUEVO;
                              CAPTION '&Nuevo';
                              PICTURE 'NUEVO1';
                              ACTION ( Nuevo() )
                      BUTTON EDITAR;
                              CAPTION '&Editar';
                              PICTURE 'EDITAR1';
                              ACTION ( Editar() )
                      BUTTON GUARDAR;
                              CAPTION '&Guardar';
                              PICTURE 'EDITAR1';
                              ACTION ( Guardar(), cArchivo := '', InicializaVariables() )
                      BUTTON CERRAR;
                              CAPTION '&Cerrar';
                              PICTURE 'CERRAR1';
                              ACTION ( cArchivo := '' , winnew.release )
              END TOOLBAR
              @062,007 LABEL   BASE    VALUE 'Nombre' TRANSPARENT
              @055,058 TEXTBOX NOMBRE  WIDTH 250 MAXLENGTH 8 UPPER
              @088,011 LABEL CAMPO     VALUE 'Campo'     TRANSPARENT
              @088,224 LABEL TIPO      VALUE 'Tipo'      TRANSPARENT
              @088,365 LABEL LARGO     VALUE 'Largo'     TRANSPARENT
              @088,476 LABEL DECIMALES VALUE 'Decimales' TRANSPARENT
              @084,058 TEXTBOX  NOMBRE_CAMPO    WIDTH 150 MAXLENGTH 12 UPPER
              @084,255 COMBOBOX TIPO_CAMPO      WIDTH 100  ITEMS {'C','N','D','L','M' } VALUE 1
              @084,400 TEXTBOX  LARGO_CAMPO     WIDTH 60  NUMERIC INPUTMASK '999'      RIGHTALIGN
              @084,537 TEXTBOX  DECIMALES_CAMPO WIDTH 60  NUMERIC INPUTMASK '99'       RIGHTALIGN ON ENTER AgregaCampo()
              @116,001 GRID ESTRUCTURA WIDTH ( winnew.width-23 )  HEIGHT ( winnew.height-145 );
                  HEADERS {'Nombre','Tipo','Longitud','Decimales'};
                  WIDTHS { 260,120,80,80 };
                  JUSTIFY { 0,0,1,1 };
                  ITEMS {}
              DEFINE CONTEXT MENU
                      ITEM "Modificar Linea"+Chr(9)+'F2'   ACTION ( Modifica_Linea() )
                      ITEM "Eliminar Linea "+Chr(9)+'^Del' ACTION ( Eliminar_Linea() )
              END MENU
              ON KEY F2  ACTION ( Modifica_Linea() )
              ON KEY CONTROL+DELETE  ACTION ( Eliminar_Linea() )
      END WINDOW
      CENTER WINDOW winnew
      ACTIVATE WINDOW winnew
RETURN NIL
STATIC FUNCTION InicializaVariables()
      winnew.NOMBRE_CAMPO.VALUE    := ''
      winnew.TIPO_CAMPO.VALUE      := 1
      winnew.LARGO_CAMPO.VALUE     := 0
      winnew.DECIMALES_CAMPO.VALUE := 0
      winnew.NOMBRE.ENABLED          := .F.
      winnew.NOMBRE_CAMPO.ENABLED    := .F.
      winnew.TIPO_CAMPO.ENABLED      := .F.
      winnew.LARGO_CAMPO.ENABLED     := .F.
      winnew.DECIMALES_CAMPO.ENABLED := .F.
      winnew.ESTRUCTURA.ENABLED      := .F.
RETURN NIL
STATIC FUNCTION Nuevo()
      winnew.NOMBRE.ENABLED          := .T.
      winnew.NOMBRE_CAMPO.ENABLED    := .T.
      winnew.TIPO_CAMPO.ENABLED      := .T.
      winnew.LARGO_CAMPO.ENABLED     := .T.
      winnew.DECIMALES_CAMPO.ENABLED := .T.
      winnew.ESTRUCTURA.ENABLED      := .T.
      winnew.NOMBRE.SetFocus
RETURN NIL
STATIC FUNCTION Editar()
      Local aEstructura,cCarpeta,i,nPos
      IF cArchivo == ''
              cCarpeta := GetCurrentFolder()
              cArchivo := ALLTRIM(Getfile ( { {'DBFs','*.DBF'} } , 'Abrir base de datos' , cCarpeta , .F. , .T. ))
      ENDIF
      nPos := RAT( '\',cArchivo )
      cCarpeta := SubStr( cArchivo,1,nPos )
      cArchivo := SubStr( cArchivo,nPos+1,Len(cArchivo) )
      nPos := RAT( '.',cArchivo )
      cArchivo := SubStr( cArchivo,1,nPos-1 )
      winnew.NOMBRE.VALUE            := cArchivo
      If winnew.NOMBRE.Value == ''
              winnew.NOMBRE.SetFocus
        RETURN NIL
      Endif
      winnew.NOMBRE.ENABLED          := .T.
      winnew.NOMBRE_CAMPO.ENABLED    := .T.
      winnew.TIPO_CAMPO.ENABLED      := .T.
      winnew.LARGO_CAMPO.ENABLED     := .T.
      winnew.DECIMALES_CAMPO.ENABLED := .T.
      winnew.ESTRUCTURA.ENABLED      := .T.
      IF FILE(cCarpeta+cArchivo+'.DBF')
              USE (cCarpeta+cArchivo) ALIAS (cArchivo) EXCLUSIVE NEW
              aEstructura := DBstruct()
              CLOSE (cArchivo)
              winnew.ESTRUCTURA.DeleteAllItems
              FOR I := 1 TO LEN(aEstructura)
                      winnew.ESTRUCTURA.AddItem( { aEstructura[I,1],aEstructura[I,2],AllTrim(Str(aEstructura[I,3],3,0)),AllTrim(Str(aEstructura[I,4],2,0)) } )
              NEXT I
      ENDIF
RETURN NIL
STATIC FUNCTION Modifica_Linea()
      winnew.NOMBRE_CAMPO.Value    := winnew.ESTRUCTURA.Item(winnew.ESTRUCTURA.Value)[1]
      winnew.TIPO_CAMPO.Value      := Ascan({'C','N','D','L','M' },winnew.ESTRUCTURA.Item(winnew.ESTRUCTURA.Value)[2])
      winnew.LARGO_CAMPO.Value     := VAL(winnew.ESTRUCTURA.Item(winnew.ESTRUCTURA.Value)[3])
      winnew.DECIMALES_CAMPO.Value := VAL(winnew.ESTRUCTURA.Item(winnew.ESTRUCTURA.Value)[4])
      Nuevo := .F.
RETURN NIL
Static Function Eliminar_Linea()
      Local v
      v := winnew.ESTRUCTURA.Value
      winnew.ESTRUCTURA.DeleteItem(winnew.ESTRUCTURA.Value)
      winnew.ESTRUCTURA.Value := iif(v > 1, v-1, 1)
      winnew.ESTRUCTURA.Setfocus
RETURN NIL
Static Function AgregaCampo()
      IF winnew.TIPO_CAMPO.Value == 3
              winnew.LARGO_CAMPO.VALUE := 8
      ELSEIF winnew.TIPO_CAMPO.Value == 4
              winnew.LARGO_CAMPO.VALUE := 1
      ELSEIF winnew.TIPO_CAMPO.Value == 5
              winnew.LARGO_CAMPO.VALUE := 10
      ENDIF
      IF winnew.TIPO_CAMPO.Value > 2
              winnew.DECIMALES_CAMPO.Value := 0
      ENDIF
      IF Nuevo
              winnew.ESTRUCTURA.AddItem( { winnew.NOMBRE_CAMPO.Value,;
                                              winnew.TIPO_CAMPO.Item(winnew.TIPO_CAMPO.Value),;
                                              hb_ntos(winnew.LARGO_CAMPO.Value),;
                                              hb_ntos(winnew.DECIMALES_CAMPO.Value) } )
      ELSE
              winnew.ESTRUCTURA.Cell(winnew.ESTRUCTURA.Value, 1) := winnew.NOMBRE_CAMPO.Value
              winnew.ESTRUCTURA.Cell(winnew.ESTRUCTURA.Value, 2) := winnew.TIPO_CAMPO.Item(winnew.TIPO_CAMPO.Value)
              winnew.ESTRUCTURA.Cell(winnew.ESTRUCTURA.Value, 3) := hb_ntos(winnew.LARGO_CAMPO.Value)
              winnew.ESTRUCTURA.Cell(winnew.ESTRUCTURA.Value, 4) := hb_ntos(winnew.DECIMALES_CAMPO.Value)
              Nuevo := .T.
      ENDIF
      winnew.ESTRUCTURA.Refresh
      winnew.NOMBRE_CAMPO.Value    := ''
      winnew.TIPO_CAMPO.Value      := 1
      winnew.LARGO_CAMPO.Value     := ''
      winnew.DECIMALES_CAMPO.Value := ''
      winnew.NOMBRE_CAMPO.SetFocus
RETURN NIL
Static Function Guardar()
      Local aStruct := {},i
      If winnew.NOMBRE.Value == ''
              winnew.NOMBRE.SetFocus
        RETURN NIL
      Endif
      FOR I := 1 TO winnew.ESTRUCTURA.ItemCount
         IF ASCAN( aStruct, {|e| e[1]==winnew.ESTRUCTURA.Item(I)[1]} ) == 0
              AADD( aStruct, { winnew.ESTRUCTURA.Item(I)[1],winnew.ESTRUCTURA.Item(I)[2],Val(winnew.ESTRUCTURA.Item(I)[3]),Val(winnew.ESTRUCTURA.Item(I)[4]) })
         ENDIF
      NEXT I
      winnew.NOMBRE.Value := Alltrim(winnew.NOMBRE.Value)
      IF File(winnew.NOMBRE.Value+'.DBF')
              USE (winnew.NOMBRE.Value)
              COPY TO ( '_'+winnew.NOMBRE.Value )
              CLOSE (winnew.NOMBRE.Value)
              DBCreate(winnew.NOMBRE.Value,aStruct)
              USE (winnew.NOMBRE.Value)
              ZAP
              APPEND FROM ( '_'+winnew.NOMBRE.Value )
              CLOSE (winnew.NOMBRE.Value)
              Ferase( '_'+winnew.NOMBRE.Value+'.DBF' )
              IF FILE ( '_'+winnew.NOMBRE.Value+'.FPT' )
                      Ferase( '_'+winnew.NOMBRE.Value+'.FPT' )
              ENDIF
      ELSE
              DbCreate(winnew.NOMBRE.Value,aStruct)
      ENDIF
RETURN NIL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

no funciona fwrite

Publicado por Rosy (39 intervenciones) el 14/06/2024 14:20:35
Gracias por la respuesta.
Mas vale tarde que nunca jejeje!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar