user41186: Good day! I seem to be having trouble creating multiple tables with EDB. I am using Arduino UNO and SD Card module to save my db.  
Here is my Serial.  

Here is my table declaration.  
struct LogEvent {
  int id;
  String fname;
  float temperature;
}
logEvent;

struct SecondEvent {
  int id;
  String lastname;
}
secondEvent;  

Here is my db.create() code.
db.create(0, TABLE_SIZE, (unsigned int)sizeof(logEvent));
db.create(0, TABLE_SIZE, (unsigned int)sizeof(secondEvent));

Now, when I try to retrieve, it is a whack. Here is my save and retrieve code.  
void createRecords(int num_recs, float correctTemperature)
{
    Serial.print("Creating Records... ");
    for (int recno = 1; recno <= num_recs; recno++)
    {
      correctId++;
      logEvent.id = correctId;
      logEvent.fname = "Brix Nicholson";
      logEvent.temperature = correctTemperature;
      secondEvent.id = correctId;    
      EDB_Status result = db.appendRec(EDB_REC logEvent);
      if (result != EDB_OK) printError(result);   
    }
  Serial.println("DONE");
}

void createRecordSecondEvent()
 {
   correctId++;
   secondEvent.id = correctId;
   secondEvent.lastname = "Secretaria";
   EDB_Status result = db.appendRec(EDB_REC secondEvent);
   if (result != EDB_OK) printError(result);
 }  

void selectLastRecord()
{
  int lastRecNum = db.count();
  EDB_Status result = db.readRec(lastRecNum, EDB_REC logEvent);
  if(result == EDB_OK)
   {
     Serial.print(" ID: ");
     Serial.print(logEvent.id);
     Serial.print(" Name: ");
     Serial.print(logEvent.fname);
     Serial.print(" Temp: ");
     Serial.println(logEvent.temperature);
   }
   else printError(result);
}

void selectLastSecondRecord()
{
 int lastRecNum = db.count();
 EDB_Status result = db.readRec(lastRecNum, EDB_REC secondEvent);
 if(result == EDB_OK)
  {
   Serial.print("Second Event ID: ");
   Serial.print(secondEvent.id);
   Serial.print("Last Name: ");
   Serial.print(secondEvent.lastname);
  }
  else printError(result);
}


user41186: I think I have found the answer to my problem. I forgot to increase the address of the EDB_header.  
I wrote: 
db.create(0, TABLE_SIZE, (unsigned int)sizeof(logEvent));
db.create(0, TABLE_SIZE, (unsigned int)sizeof(secondEvent));  

Instead of:    
db.create(0, TABLE_SIZE, (unsigned int)sizeof(logEvent));
db.create(1, TABLE_SIZE, (unsigned int)sizeof(secondEvent));


user48660: 
I think I have found the answer to my problem. I forgot to increase
  the address of the EDB_header.

you're right about increasing the address of EDB_header. 
But the address is the position from where the library starting reading/writing.
if you have a look at 
https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L66
and 
https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L34
the library writes a fixed size of the header in the binary format
which includes 

a magic byte to recognize the EDB header
the number of records currently present in the table which is 0 at of this time 
size of your single record
the size of the table (max amount of memory that the table is allowed to consume)

and to write a new record
https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L93
so in
db.create(0, TABLE_SIZE, (unsigned int)sizeof(logEvent));
db.create(1, TABLE_SIZE, (unsigned int)sizeof(secondEvent));

the second statement will override the old header excluding the first byte (0'th position)
the solution to your problem will be
unsigned int FIRST_TABLE_HEADER_POSITION = 0;
db.create(FIRST_TABLE_HEADER_POSITION, FIRST_TABLE_SIZE, (unsigned int)sizeof(logEvent));

unsigned int SECOND_TABLE_HEADER_POSITION = FIRST_TABLE_HEADER_POSITION + (unsigned int)sizeof(EDB_Header) + FIRST_TABLE_SIZE;

db.create(SECOND_TABLE_HEADER_POSITION, SECOND_TABLE_SIZE, (unsigned int)sizeof(secondEvent));

now you can use 
EDB_Status result = db.open(FIRST_TABLE_HEADER_POSITION );

and 
db.close();
EDB_Status result = db.open(SECOND_TABLE_HEADER_POSITION );


41186: <p>Good day! I seem to be having trouble creating multiple tables with EDB. I am using Arduino UNO and SD Card module to save my db.  </p>

<p>Here is my Serial.  </p>

<p><a href="https://i.stack.imgur.com/ip89i.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ip89i.png" alt="Here is my serial"></a><br>
Here is my table declaration.  </p>

<pre><code>struct LogEvent {
  int id;
  String fname;
  float temperature;
}
logEvent;

struct SecondEvent {
  int id;
  String lastname;
}
secondEvent;  
</code></pre>

<p>Here is my db.create() code.</p>

<pre><code>db.create(0, TABLE_SIZE, (unsigned int)sizeof(logEvent));
db.create(0, TABLE_SIZE, (unsigned int)sizeof(secondEvent));
</code></pre>

<p>Now, when I try to retrieve, it is a whack. Here is my save and retrieve code.  </p>

<pre><code>void createRecords(int num_recs, float correctTemperature)
{
    Serial.print("Creating Records... ");
    for (int recno = 1; recno &lt;= num_recs; recno++)
    {
      correctId++;
      logEvent.id = correctId;
      logEvent.fname = "Brix Nicholson";
      logEvent.temperature = correctTemperature;
      secondEvent.id = correctId;    
      EDB_Status result = db.appendRec(EDB_REC logEvent);
      if (result != EDB_OK) printError(result);   
    }
  Serial.println("DONE");
}

void createRecordSecondEvent()
 {
   correctId++;
   secondEvent.id = correctId;
   secondEvent.lastname = "Secretaria";
   EDB_Status result = db.appendRec(EDB_REC secondEvent);
   if (result != EDB_OK) printError(result);
 }  

void selectLastRecord()
{
  int lastRecNum = db.count();
  EDB_Status result = db.readRec(lastRecNum, EDB_REC logEvent);
  if(result == EDB_OK)
   {
     Serial.print(" ID: ");
     Serial.print(logEvent.id);
     Serial.print(" Name: ");
     Serial.print(logEvent.fname);
     Serial.print(" Temp: ");
     Serial.println(logEvent.temperature);
   }
   else printError(result);
}

void selectLastSecondRecord()
{
 int lastRecNum = db.count();
 EDB_Status result = db.readRec(lastRecNum, EDB_REC secondEvent);
 if(result == EDB_OK)
  {
   Serial.print("Second Event ID: ");
   Serial.print(secondEvent.id);
   Serial.print("Last Name: ");
   Serial.print(secondEvent.lastname);
  }
  else printError(result);
}
</code></pre>
 41186: <p>I think I have found the answer to my problem. I forgot to increase the address of the EDB_header.  </p>

<p>I wrote: </p>

<pre><code>db.create(0, TABLE_SIZE, (unsigned int)sizeof(logEvent));
db.create(0, TABLE_SIZE, (unsigned int)sizeof(secondEvent));  
</code></pre>

<p>Instead of:    </p>

<pre><code>db.create(0, TABLE_SIZE, (unsigned int)sizeof(logEvent));
db.create(1, TABLE_SIZE, (unsigned int)sizeof(secondEvent));
</code></pre>
 48660: <blockquote>
  <p>I think I have found the answer to my problem. I forgot to increase
  the address of the EDB_header.</p>
</blockquote>

<p>you're right about increasing the address of EDB_header. 
But the address is the position from where the library starting reading/writing.</p>

<p>if you have a look at 
<a href="https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L66" rel="nofollow noreferrer">https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L66</a>
and 
<a href="https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L34" rel="nofollow noreferrer">https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L34</a></p>

<p>the library writes a fixed size of the header in the binary format
which includes </p>

<ol>
<li>a magic byte to recognize the EDB header</li>
<li>the number of records currently present in the table which is 0 at of this time </li>
<li>size of your single record</li>
<li>the size of the table (max amount of memory that the table is allowed to consume)</li>
</ol>

<p>and to write a new record
<a href="https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L93" rel="nofollow noreferrer">https://github.com/jwhiddon/EDB/blob/master/EDB.cpp#L93</a></p>

<p>so in</p>

<pre><code>db.create(0, TABLE_SIZE, (unsigned int)sizeof(logEvent));
db.create(1, TABLE_SIZE, (unsigned int)sizeof(secondEvent));
</code></pre>

<p>the second statement will override the old header excluding the first byte (0'th position)</p>

<p>the solution to your problem will be</p>

<pre><code>unsigned int FIRST_TABLE_HEADER_POSITION = 0;
db.create(FIRST_TABLE_HEADER_POSITION, FIRST_TABLE_SIZE, (unsigned int)sizeof(logEvent));

unsigned int SECOND_TABLE_HEADER_POSITION = FIRST_TABLE_HEADER_POSITION + (unsigned int)sizeof(EDB_Header) + FIRST_TABLE_SIZE;

db.create(SECOND_TABLE_HEADER_POSITION, SECOND_TABLE_SIZE, (unsigned int)sizeof(secondEvent));
</code></pre>

<p>now you can use </p>

<pre><code>EDB_Status result = db.open(FIRST_TABLE_HEADER_POSITION );
</code></pre>

<p>and </p>

<pre><code>db.close();
EDB_Status result = db.open(SECOND_TABLE_HEADER_POSITION );
</code></pre>
